具体代码实现
/** * 冒泡算法 go 实现 */package mainimport ( "fmt" "math/rand" "time")func main() { // 获取随机数个数 randCount := 10 randRandMax := 100 // bucketMax := randRandMax + 1 // make 创建切片,已经初始化完毕。在append的话,前面值都为0 // randList := make([]int, randCount) var randList []int // 随机数中添加种子,可以保证每次执行,产生的随机数是“真的”随机 seed := rand.New(rand.NewSource(time.Now().UnixNano())) for index := 0; index < randCount; index++ { number := seed.Intn(randRandMax) randList = append(randList, number) } fmt.Printf("原始列表[%d]: %v\n", len(randList), randList) // 最外层表示一共循环的次数 for i := 0; i < len(randList)-1; i++ { // 内层表示逐层比较的次数递减 for j := 0; j < len(randList)-1-i; j++ { // 这里打印出来 i, j, j+1 来验证实际的冒泡 是相邻的两个数字做对比 // 并且对比次数是逐层递减的 fmt.Println(i, j, j+1) // // sort Z -> A // if randList[j] < randList[j+1] { // randList[j], randList[j+1] = randList[j+1], randList[j] // } // sort A -> Z if randList[j] < randList[j+1] { randList[j], randList[j+1] = randList[j+1], randList[j] } } fmt.Println("<-------------->") // fmt.Println(i, randList[i]) } fmt.Println("\n排序结束\n排序列表: ", randList)}
结果展示
原始列表[10]: [58 52 40 0 38 67 12 22 74 18]0 0 10 1 20 2 30 3 40 4 50 5 60 6 70 7 80 8 9<-------------->1 0 11 1 21 2 31 3 41 4 51 5 61 6 71 7 8<-------------->2 0 12 1 22 2 32 3 42 4 52 5 62 6 7<-------------->3 0 13 1 23 2 33 3 43 4 53 5 6<-------------->4 0 14 1 24 2 34 3 44 4 5<-------------->5 0 15 1 25 2 35 3 4<-------------->6 0 16 1 26 2 3<-------------->7 0 17 1 2<-------------->8 0 1<-------------->排序结束排序列表: [74 67 58 52 40 38 22 18 12 0]
文章来源:智云一二三科技
文章标题:golang实现冒泡算法
文章地址:https://www.zhihuclub.com/1462.shtml