冒泡排序是各个语言中的基本排序算法,本次我们用go语言实现简单的冒泡排序

package main

import "fmt"

// [13,10,5,7,2]
// [10,13,5,7,2]
// [10,5,13,7,2]
// [10,5,7,13,2]
// [10,5,7,2,13] func bubble_sort(a []int) {
for i := len(a) - 1; i > 0; i-- {
for j := 0; j < i; j++ {
if a[j] > a[j+1] {
a[j], a[j+1] = a[j+1], a[j]
}
}
}
} func main() {
a := []int{13, 10, 5, 7, 2}
bubble_sort(a)
fmt.Println(a)
}

  

代码运行后,可以看到排序完成

[2 5 7 10 13]

  

让我们来分析上面的代码。冒泡排序整个的逻辑就是,让第一个与第二个比较,然后交换位置,第二个与第三个比较,然后交换位置。最终将最大的冒泡到切片的最右侧。接着,再冒泡一轮,从第二轮冒泡开始,最右侧的数不用比较了,接着第三轮,直到最左侧两个数交换完毕为止。

所以在代码中,我们设置了两层循环。第一层的循环,是比较的轮数,第二层循环,是在每一轮中,每一个数的比较。所以第一层循环的i的取值范围就是len(a)-1,即4,然后每一次减1,最后一轮只有第一个数和第二个数比较。第二层循环的取值范围,是根据第一层循环来的,也是每一轮减1,所以当最后一轮比较时,只剩下两个数了。

最新文章

  1. Convert between cv::Mat and QImage 两种图片类转换
  2. [Unity2D]预制件Prefab
  3. 事件日志ID 2511:服务器服务无法重新创建 &lt;sharename&gt; 共享关系,因为 &lt;address&gt; 目录已不再存在
  4. HDU 1025-Constructing Roads In JGShining&#39;s Kingdom(最长不降子序列,线段树优化)
  5. iMAC——全新重装Mac系统
  6. QT:使用“状态模式”绘制界面
  7. BZOJ 1264: [AHOI2006]基因匹配Match( LCS )
  8. ASP.NET AJAX 创建类
  9. Java经典编程题50道之二十六
  10. 201521123119《Java程序设计》第7周学习总结
  11. socket及其相关(续篇)
  12. ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
  13. RACSignal的一些常用用法
  14. 【转】H.264中的NAL技术
  15. Mac电脑如何设置DHCP
  16. 解决跨域(CORS)问题
  17. django后台admin管理布局
  18. [转载]Buffer cache的调整与优化
  19. 浅谈dubbo的ExceptionFilter异常处理
  20. js 数组的增删改查

热门文章

  1. 输入Javac提示不是内部或外部命令怎么办
  2. 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能
  3. 07 drf源码剖析之节流
  4. Appium+Python3环境搭建,其实超简单!【软件测试教程】
  5. OSCP Learning Notes - Buffer Overflows(2)
  6. Python Ethical Hacking - KEYLOGGER(1)
  7. javascript兼容问题 : let降级到var 遇到的闭包问题的解决方法
  8. C++语法小记---智能指针
  9. scrapy分布式浅谈+京东示例
  10. Golang获取目录下的文件及目录信息