- 冒泡排序(Bubble Sort),是⼀种计算机科学领域的较简单的排序算
法。 - 它重复地遍历要排序的数组元素,⼀次⽐较两个元素,如果他们的顺序错误就把他们交换过来。重复地进⾏直到没有再需要交换,也就是说该数组已经排序完成。
- 这个算法的名字由来是因为越⼤的元素会经由交换慢慢“浮”到数列的顶
端,故名“冒泡排序”。
- ⽐较相邻的元素。如果第⼀个⽐第⼆个⼤,就交换他们两个。
- 对每⼀对相邻元素做同样的⼯作,从开始第⼀对到结尾的最后⼀对。在这⼀点,最后的元素应该会是最⼤的数。
- 针对所有的元素重复以上的步骤,除了最后⼀个。
- 持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。
//从⼩到⼤排列
func BubbleSort(arr []int) {
iCount := 0 //记录内循环次数
jCount := 0 //记录外循环的次数
//双层for循环
for i := 0; i < len(arr)-1; i++ {
//定义⼀个标记,判断本轮是否有两两换位。如果没有换位,那说明排序结
束,可以跳出循环。
//例如:12345,当执⾏第⼀轮循环后,所有相邻的两个数值都⽆需换位,那
说明排序正常,⽆需排序。不⽤执⾏后续的循环。
flag := true
for j := 0; j < len(arr)-1-i; j++ {
//判断相邻两个数据的⼤⼩
if arr[j] > arr[j+1] {
//如果前者⽐后者⼤,则执⾏数据交换
arr[j], arr[j+1] = arr[j+1], arr[j]
//如果出现换位,说明排序还没有结束,需要继续循环执⾏。
flag = false
}
iCount++
}
jCount++
//如果本轮没有换位,那说明排序结束,则跳出循环
if (flag) {
break
}
}
fmt.Println(“i循环次数=”, jCount)
fmt.Println(“j循环次数=”, iCount) }



