一、基本思想
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡- -样逐渐向上冒。
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较(优化)
二、 图示过程
三、动图展示
如图:每次遍历都能确定一个数组元素(未排序的最大元素)的正确位置
四、代码实现
package main
import "fmt"
func BubbleSort(arr *[5]int){
fmt.Println("Before the sorting: arr = ",(*arr))
temp := 0 //临时变量用于交换
arrLength = len(*arr)
//冒泡遍历
for i := 0; i < arrLength - 1; i++ {
for j := 0; arrLength - 1 - i; j++ {
if (*arr)[j] > (*arr)[j + 1]){
//交换
temp = (*arr)[j]
(*arr)[j] = (*arr)[j + 1]
(*arr)[j + 1] = (*arr)[j]
}
}
}
fmt.Println("After the sorting: arr = ",(*arr))
}
func main() {
//定义数组
arr := [5]int{55, 22, 66, 99, 11}
//sort
BubbleSort(&arr)
fmt.Println("main arr=",arr)
}