[经典算法]冒泡排序 Bubble-Sort
类似于水中冒泡,较大的快一点冒起来,较小的慢慢冒起来。假设从小到大排序,即较大的数慢慢往后排,较小的数慢慢往前排。每一趟遍历,将一个最大的数移到序列末尾。
基本方法:
1、比较数组中两个相邻的元素,如果第一个数比第二个大,则交换位置
2、每一次比较,都会产生一个最大或者最小的数,移到数组后面
3、下一轮则可以少一次排序,依次循环,直到结束
def BubbleSort(ls): for i in range(len(ls)-1): # 从第2个数对比排序,需要len(ls)-1趟排序 for j in range(len(ls)-1-i): # 每一趟排序确定一个数,每一趟需要两两比较的次数为len(ls)-1-i if ls[j+1] < ls[j]: # 暂存,然后交换位置 temp = ls[j+1] ls[j+1] = ls[j] ls[j] = temp print('第',i+1,'趟 第',j+1,'次的排序结果为:',ls) return ls a = [9,5,6,8,2,7,3,4,1] print('冒泡排序结果为:',BubbleSort(a))
====================== RESTART: test.py ====================== 第 1 趟 第 1 次的排序结果为: [5, 9, 6, 8, 2, 7, 3, 4, 1] 第 1 趟 第 2 次的排序结果为: [5, 6, 9, 8, 2, 7, 3, 4, 1] 第 1 趟 第 3 次的排序结果为: [5, 6, 8, 9, 2, 7, 3, 4, 1] 第 1 趟 第 4 次的排序结果为: [5, 6, 8, 2, 9, 7, 3, 4, 1] 第 1 趟 第 5 次的排序结果为: [5, 6, 8, 2, 7, 9, 3, 4, 1] 第 1 趟 第 6 次的排序结果为: [5, 6, 8, 2, 7, 3, 9, 4, 1] 第 1 趟 第 7 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 9, 1] 第 1 趟 第 8 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 1, 9] 第 2 趟 第 1 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 1, 9] 第 2 趟 第 2 次的排序结果为: [5, 6, 8, 2, 7, 3, 4, 1, 9] 第 2 趟 第 3 次的排序结果为: [5, 6, 2, 8, 7, 3, 4, 1, 9] 第 2 趟 第 4 次的排序结果为: [5, 6, 2, 7, 8, 3, 4, 1, 9] 第 2 趟 第 5 次的排序结果为: [5, 6, 2, 7, 3, 8, 4, 1, 9] 第 2 趟 第 6 次的排序结果为: [5, 6, 2, 7, 3, 4, 8, 1, 9] 第 2 趟 第 7 次的排序结果为: [5, 6, 2, 7, 3, 4, 1, 8, 9] 第 3 趟 第 1 次的排序结果为: [5, 6, 2, 7, 3, 4, 1, 8, 9] 第 3 趟 第 2 次的排序结果为: [5, 2, 6, 7, 3, 4, 1, 8, 9] 第 3 趟 第 3 次的排序结果为: [5, 2, 6, 7, 3, 4, 1, 8, 9] 第 3 趟 第 4 次的排序结果为: [5, 2, 6, 3, 7, 4, 1, 8, 9] 第 3 趟 第 5 次的排序结果为: [5, 2, 6, 3, 4, 7, 1, 8, 9] 第 3 趟 第 6 次的排序结果为: [5, 2, 6, 3, 4, 1, 7, 8, 9] 第 4 趟 第 1 次的排序结果为: [2, 5, 6, 3, 4, 1, 7, 8, 9] 第 4 趟 第 2 次的排序结果为: [2, 5, 6, 3, 4, 1, 7, 8, 9] 第 4 趟 第 3 次的排序结果为: [2, 5, 3, 6, 4, 1, 7, 8, 9] 第 4 趟 第 4 次的排序结果为: [2, 5, 3, 4, 6, 1, 7, 8, 9] 第 4 趟 第 5 次的排序结果为: [2, 5, 3, 4, 1, 6, 7, 8, 9] 第 5 趟 第 1 次的排序结果为: [2, 5, 3, 4, 1, 6, 7, 8, 9] 第 5 趟 第 2 次的排序结果为: [2, 3, 5, 4, 1, 6, 7, 8, 9] 第 5 趟 第 3 次的排序结果为: [2, 3, 4, 5, 1, 6, 7, 8, 9] 第 5 趟 第 4 次的排序结果为: [2, 3, 4, 1, 5, 6, 7, 8, 9] 第 6 趟 第 1 次的排序结果为: [2, 3, 4, 1, 5, 6, 7, 8, 9] 第 6 趟 第 2 次的排序结果为: [2, 3, 4, 1, 5, 6, 7, 8, 9] 第 6 趟 第 3 次的排序结果为: [2, 3, 1, 4, 5, 6, 7, 8, 9] 第 7 趟 第 1 次的排序结果为: [2, 3, 1, 4, 5, 6, 7, 8, 9] 第 7 趟 第 2 次的排序结果为: [2, 1, 3, 4, 5, 6, 7, 8, 9] 第 8 趟 第 1 次的排序结果为: [1, 2, 3, 4, 5, 6, 7, 8, 9] 冒泡排序结果为: [1, 2, 3, 4, 5, 6, 7, 8, 9]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构