先自定义一个无序列表
list=[2,4,6,9,5,6,1]
冒泡就是两两相比,大的冒泡去到最后,小的冒泡来到最前面
首先做第一个数字的冒泡循环比较.
list=[2,4,6,9,5,6,1]
for i in range(0,len(list)-1)
if list[i]>list[i+1]:
list[i],list[i+1]=list[i+1],list[i] # 对第一个数字的冒泡的比较
一个列表有多个数字,也是要多次循环重复比较第二个第三个。。。。。
list=[2,4,6,9,5,6,1]
for j in range (0,len(list)-1)
for i in range(0,len(list)-1)
if list[i]>list[i+1]:
list[i],list[i+1]=list[i+1],list[i]
print(list)
到了这一步,是可以实现功能的,但是还可以优化
第一个数冒泡要 len(list)-1 次,但是第二个是不用冒这么多次的泡的,因为第一次冒泡的时候,最后的数字一定是最大的,这个泡是排好了。就要优化循环的次数了。
len(list)-1-j 次
list=[2,4,6,9,5,6,1]
for j in range (0,len(list)-1)
for i in range(0,len(list)-1-j)
if list[i]>list[i+1]:
list[i],list[i+1]=list[i+1],list[i]
print(list)
也可以统计下次数
list=[2,4,6,9,5,6,1]
count=0
for j in range (0,len(list)-1)
for i in range(0,len(list)-1-j)
if list[i]>list[i+1]:
list[i],list[i+1]=list[i+1],list[i]
count+=1
print(list,count)
当然,有个不用冒泡的方法,Python的内置函数 sort
sorted(list)
也可以出来