1、算法介绍
(1)比较相邻的两个元素,前面元素比后面元素大,则交换两个元素;两个元素相等不交换(稳定);
(2)一趟比较后得到最大元素,对前面未排好序的序列重复步骤(1)
(3)循环排序结束或排序过程中无交换则排序完成
2、代码实现
2.1、golang
package main
import (
"fmt"
)
func main() {
slice := []int{5, 3, 12, 54, 23, 12, 6, 9, 19}
SortBubble(slice)
fmt.Println(slice)
}
//冒泡排序
func SortBubble(slice []int) {
n := len(slice)
isEnd := true //无交换,排序结束
for i := 0; i < n-1; i++ {
isEnd = true
for j := 0; j < n-i-1; j++ {
if slice[j] > slice[j+1] {
slice[j], slice[j+1] = slice[j+1], slice[j]
isEnd = false
}
}
if isEnd {
break
}
}
}
2.2、python3
# 冒泡排序
def sort_bubble(arr):
n = len(arr)
isEnd = True
for i in range(n-1):
isEnd = True
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
isEnd = False
if isEnd:
break
if __name__ == '__main__':
arr = [5, 3, 12, 54, 23, 12, 6, 9, 19]
sort_bubble(arr)
print(arr)