知识内容详见《大话数据结构》P378
代码实例:
package main
import (
"math/rand"
"time"
"fmt"
)
/*
思想: 第一轮排序:两两比较,最大的排序到最末尾(冒出来:即冒泡)
第二轮排序:两两比较,(第一轮剩余)最大的排序到次末尾(剩余组大的冒出来:即冒泡)
执行以上操作,经过n-1轮的排序,即可完成
*/
func BubbleSort(a []int) {
n:= len(a)
for i:=0;i<n-1;i++{//外层:通过几轮完成数据的交换完成
for j:=0;j<n-1-i;j++{//内层控制两两交换
if a[j]>a[j+1] {
a[j],a[j+1]=a[j+1],a[j]
}
}
}
fmt.Println("通过冒泡排序之后的切片为:")
fmt.Println(a)
}
func main() {
rand.Seed(time.Now().UnixNano())
arr:=make([]int,0)
for i:=0;i<10;i++{
arr=append(arr,rand.Intn(100))
}
fmt.Println("排序之前的切片为:")
fmt.Println(arr)
BubbleSort(arr)
}