golang实现冒泡算法

全栈运维 · · 1042 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

具体代码实现

/** * 冒泡算法 go 实现 */ package main import ( "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 1 0 1 2 0 2 3 0 3 4 0 4 5 0 5 6 0 6 7 0 7 8 0 8 9 <--------------> 1 0 1 1 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1 6 7 1 7 8 <--------------> 2 0 1 2 1 2 2 2 3 2 3 4 2 4 5 2 5 6 2 6 7 <--------------> 3 0 1 3 1 2 3 2 3 3 3 4 3 4 5 3 5 6 <--------------> 4 0 1 4 1 2 4 2 3 4 3 4 4 4 5 <--------------> 5 0 1 5 1 2 5 2 3 5 3 4 <--------------> 6 0 1 6 1 2 6 2 3 <--------------> 7 0 1 7 1 2 <--------------> 8 0 1 <--------------> 排序结束 排序列表: [74 67 58 52 40 38 22 18 12 0] 

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:全栈运维

查看原文:golang实现冒泡算法

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1042 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传