Python 冒泡排序详细解读,史上最详细版,初学者注意 好好读懂每个字。

本文深入讲解了冒泡排序算法的原理,包括两两元素比较和典型双层循环的使用,探讨了常见错误如IndexError,并提供了两个实例演示冒泡排序的过程及时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题冒泡排序:原理就是重复的进行 两两 元素之间的比较(冒泡的意思就是左右之间的比较元素)

注意错误点 IndexError: list index out of range (列表索引超出范围)
冒泡循环 典型的2层 for 循环 ,for1(最外层) 和 for2(内层循环)。
在冒泡循环中 外层for1 循环的次数代表的 是 列表中 所有数 比较的次数。一般情况为
range(1,len(list1))或者 range(0,len(list1)-1)

在内层循环中 循环次数代表的是 剩余元素之间 两两比较,外层每比较一次,内层就要减少一次,所以
range(0,len(list1)-i) 或者 range(0,len(list1)-i-1)

range()不论内外层 都要做 减一的排序,因为两两 比较最后一个元素 是不用再去比较的

从下面的例子可以看出 range(1,len(list1))与range(0,len(list1)-i) 是一对 for1 for2循环
range(0,len(list1)-i-1)与 range(0,len(list1)-i-1) 也是一对for1(外层) for2(内层)循环

标题冒泡循环的时间复杂度 是 N2
#例子1
sum1= 0 #比较次数
list1 = [4, 4, 5, 6, 7, 8, 3, 5,9]
for i in range(1, len(list1)):		# 注意这里的起始下标为从一开始
    for j in range(0, len(list1) - i):	# 最后一个自己不用和自己比较所以,可以少一次
        sum1 +=1
        if list1[j] > list1[j + 1]:
            list1[j], list1[j + 1] = list1[j + 1], list1[j]
print(list1)
print(sum1)
#例子2
sum = 0
list2 = [45, 4, 6, 5, 9, 7, 8, 3, 45]
for i in range(0, len(list2) - 1):  # 最后一个自己不用和自己比较所以,可以少一次
    for j in range(0, len(list2) - i - 1):	# 每执行一次将本次循环中最大的元素放入对应末尾,所以减去i,少执行对应次数
        sum += 1
        if list2[j] > list2[j + 1]:
            list2[j], list2[j + 1] = list2[j + 1], list2[j]
print(list2)
print(sum)

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值