简单易懂的冒泡排序
这次介绍的是最简单的冒泡排序.......好了废话不多说先看下面
#先定义一个变量,假设我们要排列下面列表中的元素的顺序
i= [10,4,7,2,1,9,6]
#先分析一下
首先先弄懂冒泡排序,两两相比,第一位比第二位大的话,就相互换位置,.....依次类推,直到最后排完的顺序应该是[1,2,4,6,7,9,10]
先假设第一位和第二位相比较
这边可以用i[0] 跟i[1] ,根据索引获取值,这边都不用多说了哈
第一次:i[0] 跟 i[1]
第二次:i[1] 跟 i[2]
第i次:i[len(i)-2] 跟 i[len(i)-1] 这边是最后第二位和最后第一位相比较
好了,弄懂以上的逻辑,下面开始写代码吧
1 2 3 4 5 6 7 8 9 10 | #定义一个变量j = 0 while j < len (i) - 1 : #控制循环,先弄懂整个循环结束的时候,需要比较多少次 if i[j]>i[j + 1 ]: #如果第一位大于第二位的话,执行以下代码 i[j],i[j + 1 ] = i[j + 1 ],i[j] #互换位置 j + = 1 #每次循环+1 print (i) |
是不是很简单?你以为这就完事了?错了这只是把最大的那个数循环完了,可以打印看看,现在最大的那个10是不是已经到最后面了?
好了下面开始进一步操作,现在知道上面的代码全部执行完会把最大的那个数放到最后,那现在知道该如何操作了吧?
很简单就是再套个外循环就可以了,那外循环该循环多少次呢?可以根据列表的长度减1来操作就可以了,下面开始操作
1 2 3 4 5 6 7 8 9 10 11 12 13 | i = [ 10 , 4 , 7 , 2 , 1 , 9 , 6 ] a = 0 while a < len (i) - 1 : #控制外层循环 # 定义一个变量 j = 0 while j < len (i) - 1 : # 控制内层循环 if i[j] > i[j + 1 ]: # 如果第一位大于第二位的话,执行以下代码 i[j], i[j + 1 ] = i[j + 1 ], i[j] # 互换位置 j + = 1 # 每次循环+1 a + = 1 print (i) |
是不是很简单? 其实内部还有很多优化的地方,上面的列表实际其实比较了36次,然而假如我换一个列表呢?
比如列表[1,2,3,8,7,5,4],其实有很多次比较都可以省略的,这样会优化了不少,不然要是用上面的代码,还是一样每次都要比较这么多次数的。
如何优化呢?下次再更新优化后的哈
__EOF__

本文链接:https://www.cnblogs.com/weiweivip666/p/12907856.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
-------------------------------------------
个性签名:代码过万,键盘敲烂!!!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人