浅谈冒泡排序

冒泡排序
首先讲一下什么是冒泡排序,简单来说就是将数列改成升序或者降序排列。
在python里面sort(reverse=True/False)同样能完成列表的升降序排列
此文只是为了帮助理清冒泡排序的逻辑性,个人意见,仅供参考。
看到此命题,在不用sort的情况下,我第一反应是将列表中每个数两两比较,如果满足要求则pass,如果不满足那么就交换位置。
list_1=[45,784,41,54,6,54,4654,456,2,1]
t=len(list_1)
for i in range(t-1):
if list_1[i]>list_1[i+1]:
pass
else:
list_1[i], list_1[i + 1] = list_1[i + 1], list_1[i]
print(list_1)
运行得到输出结果:[784, 45, 54, 41, 54, 4654, 456, 6, 2, 1]
当然此输出结果也是有问题的,那么我们这段程序中做了什么呢,第一遍遍历中只进行了45和784数据的比较或者换位,第二遍是换位后的45和41进行比较,那么就算遍历完成了,会发现换位后的较大的数字可能比前面的数字还要打,比如原数列中4654比54大,所以4654换到了前面,程序就开始更下一位的比较,但是4654比前一位的数字要大,却没有再次排序,虽然这个程序有问题,但是也不是全无收获,每次换位我们会把较小的放在后面,较小的数字会继续进行比较,直到最后,我们这样遍历一遍,却可以得到最小的数字是在最后的。那么最后的数字是可以固定的,我们就还要对前面n-1个数进行排列。两个数,排列一次,三个数排列两次,n个数排列n-1个数,所以第一部的遍历为
for i in range(len(list_1)-1):
”’第二次遍历为”’
for j in range(len(list_1) - i-1):
if list_1[j] <= list_1[j + 1]:
list_1[j], list_1[j + 1] = list_1[j + 1], list_1[j]
对于range()里面的次数为什么要-1的原因是,n个数只需要整理好n-1个,第二层遍历因为前面已经排序好了i个,所以要-i,
具体程序为:
“` python
list_1=[45,784,41,54,6,54,4654,456,2,1]
for i in range(len(list_1)-1):
for j in range(len(list_1) - i-1):
if list_1[j] <= list_1[j + 1]:
list_1[j], list_1[j + 1] = list_1[j + 1], list_1[j]
else:
pass
print(list_1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值