BubbleSort,即冒泡排序是一种交换排序。

什么是交换排序呢?

交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。

相关参考可点击

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package main

import "fmt"

func main() {
sli := []int{4, 93, 84, 85, 80, 37, 81, 93, 27, 12}
fmt.Println(sli)
BubbleAsort(sli)
BubbleZsort(sli)
}

func BubbleAsort(target []int) {

length := len(target)
for i := 0; i <= length-1; i++ { //因为j=i+1,故而i这一层不需要遍历n次,而只需要n-1次
for j := i + 1; j < length; j++ { //j则是从第2个元素遍历到最后一个,所以也是n-1次遍历;冒牌排序时间复杂度为O(n2),但要说实际执行的次数,最差为(n-1)的平方
if target[i] > target[j] {
target[i], target[j] = target[j], target[i]
}
}
}
fmt.Println(target)
}

func BubbleZsort(target []int) {
length := len(target)
for i := 0; i < length-1; i++ {
for j := i + 1; j < length; j++ {
if target[i] < target[j] {
target[i], target[j] = target[j], target[i]
}
}
}
fmt.Println(target)
}

输出为:

1
2
3
[4 93 84 85 80 37 81 93 27 12]
[4 12 27 37 80 81 84 85 93 93]
[93 93 85 84 81 80 37 27 12 4]