python冒泡排序算法非递归_python --- 冒泡排序算法

别想太多了,这个冒泡排序就是我们脑海中想到的那个冒泡,就好像是气泡一样,较小的元素比较轻,从而要往上浮出来,

冒泡排序算法、

要对‘气泡’序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即‘轻’的元素在下面,就交换它们的位置。显然,处理一遍之后,‘最轻’的元素就浮到了最高的位置;处理两遍之后,‘第二轻的元素’就浮到了第二高的位置。在做第二遍处理时,由于最高位置上的元素已是‘最轻’的元素,所以就不用检查了。一般的,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i - 1遍的处理,它们已经正确的排好序了。

所以说了这么多干巴巴的理论知识,现在就来点实际的:

1 defbulle_sort(lst):2 for i in range(len(lst)):3 for j in range(i + 1, len(lst)):4 if lst[i] >lst[j]:5 lst[i], lst[j] =lst[j], lst[i]6 returnlst7

8

9 print(bulle_sort([3, 2, 4, 1, 7]))

要记住列表索引顾头不顾尾

要理解这个冒泡排序关键点就在于其中的两个for循环

外层循环起始值:i = 0

内层循环起始值:j = 1

最外层的控制了第一个数,然后就时通过第二层循环不断的和后面的数的一个比较的过程,通过这个过程,在第二个for循环内部调用if语句,将‘最轻’的气泡,提到最上面来

当第一个气泡确定之后,就可以通过循环来确定第二个气泡的位置,然后再利用if语句给调在第二高的位置

然后就是一个周而复始的过程

在这里要注意:

外层循环位置:是从头开始循环,然后一直到末尾

内层循环位置:内层随着外层的循环而循环,所以就不用循环外层的元素,所以要在外层的基础上加上一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值