冒泡排序代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func BubbleSort(array []int64) {
// 已经完成排序的索引位置不参与之后的对比
for j := len(array) - 1; j > 0; j-- {
triggerSwap := false
// [i]位置数值与[i+1]位置数值进行比对
// 大于的话进行位置交换
for i := 0; i < j; i++ {
if array[i] > array[i+1] {
array[i], array[i+1] = array[i+1], array[i]
triggerSwap = true
}
}
// 递归一轮未触发交换动作
// 说明排序已经正确,直接返回函数
if triggerSwap == false {
break
}
}
}

冒泡排序算法平均时间复杂度O(n2),最好时间复杂度为O(n),最差时间复杂度为O(n2)
空间复杂度O(1),稳定性为稳定