排序算法之冒泡排序详解-python版

冒泡排序:通过比较2个相邻元素之间的大小,交换元素顺序,从而达到排序目的。

从百度百科摘抄下来的冒泡排序原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

  3. 针对所有的元素重复以上的步骤,除了最后一个。

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

如上图,列表num有6个元素,地址为0-5。

我们把规律列出来:

第1轮,i=0:从num0开始,比较5次,6-1

第2轮,i=1:从num1开始,比较4次,6-1-1

第3轮,i=2:从num2开始,比较3次,6-1-2

第4轮,i=3:从num3开始,比较2次,6-1-3

第5轮,i=4:从num4开始,比较1次,6-1-4

总共比较5轮,就完成排序。轮数:len-1

比较的次数为:len-1-i

外循环:比较的轮数。len-1

内循环:每轮比较的次数。len-1-i

python代码实现:

python 复制代码
def bubble_sort(num):
    for i in range(len(num)-1):
        for j in range(len(num)-i-1):
            if num[j]>num[j+1]:
                num[j],num[j+1]=num[j+1],num[j]
    return num

print(bubble_sort([1,3,4,6,5,2]))

算法时间复杂度分析:

当有n个数,全部都是逆序的时候:

列表:n,n-1,n-2,n-3,......,3,2,1

第1次:需要进行n-1次交换:得到n-1,n-2,n-3,......,3,2,1,n

第2次冒泡需要n-2次交换:得到n-2,n-3,......,3,2,1,n-1,n

根据这个规律:

第n-2次冒泡需要2次:得到2,1,3,4,......,n-1,n

第n-1次冒泡需要交换1次:得到1,2,3,4,......,n-1,n

在计算时间复杂度时,忽略低次幂,忽略高次幂的系数。

相关推荐
shirsl7 小时前
算法 Day1-数组 / 哈希 + 双指针
python·算法·哈希算法
2601_9677607814 小时前
2026年PDF压缩与页码添加工具技术实测:性能、算法与本地化适配深度对比
算法·pdf
不会就选b14 小时前
算法日常・每日刷题--<贪心>7
数据结构·算法·leetcode
moonrailgun15 小时前
用 Node.js 复刻 Codex Astra 的终端星光
前端·javascript·算法
罗西的思考15 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(1)--- 总体
人工智能·算法·机器学习
lvwangshu16 小时前
图论:LCA、树的直径、树的重心、二分图与 Tarjan 缩点
算法·图论
302wanger17 小时前
干与湿:AI 拿走脑力之后,人剩下什么
算法
计算机编程-吉哥18 小时前
脑肿瘤MRI智能识别系统:基于深度学习的像素级脑肿瘤语义分割平台【计算机毕业设计选题推荐】
人工智能·python·深度学习·算法·毕业设计·课程设计·大数据毕业设计选题推荐
用户2049375549518 小时前
端侧语音部署踩坑:模型能跑不等于终端真的能用
后端·算法
shehuiyuelaiyuehao18 小时前
算法39,位运算,消失的两个数字
java·数据结构·算法