008_用go语言实现简单的冒泡排序
2024-08-31 07:24:16
冒泡排序是各个语言中的基本排序算法,本次我们用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,所以当最后一轮比较时,只剩下两个数了。
最新文章
- Convert between cv::Mat and QImage 两种图片类转换
- [Unity2D]预制件Prefab
- 事件日志ID 2511:服务器服务无法重新创建 <;sharename>; 共享关系,因为 <;address>; 目录已不再存在
- HDU 1025-Constructing Roads In JGShining&#39;s Kingdom(最长不降子序列,线段树优化)
- iMAC——全新重装Mac系统
- QT:使用“状态模式”绘制界面
- BZOJ 1264: [AHOI2006]基因匹配Match( LCS )
- ASP.NET AJAX 创建类
- Java经典编程题50道之二十六
- 201521123119《Java程序设计》第7周学习总结
- socket及其相关(续篇)
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
- RACSignal的一些常用用法
- 【转】H.264中的NAL技术
- Mac电脑如何设置DHCP
- 解决跨域(CORS)问题
- django后台admin管理布局
- [转载]Buffer cache的调整与优化
- 浅谈dubbo的ExceptionFilter异常处理
- js 数组的增删改查
热门文章
- 输入Javac提示不是内部或外部命令怎么办
- 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能
- 07 drf源码剖析之节流
- Appium+Python3环境搭建,其实超简单!【软件测试教程】
- OSCP Learning Notes - Buffer Overflows(2)
- Python Ethical Hacking - KEYLOGGER(1)
- javascript兼容问题 : let降级到var 遇到的闭包问题的解决方法
- C++语法小记---智能指针
- scrapy分布式浅谈+京东示例
- Golang获取目录下的文件及目录信息