冒泡算法
3 1 3 1 3 1 3 20 3 20 3 20
2 10 2 10 2 20 2 1 2 10 2 10
1 5 1 20 1 10 1 10 1 1 1 5
0 20 0 5 0 5 0 5 0 5 0 1
加入有四个数字,排列位置分别为0,1,2,3,冒泡算法是先比较0和1,大大放在位置1,小的放到0.然后再比较位置1和2,同样大的放2,小的放1,以此类推,得到最大值放到最顶部,然后不停以此循环,得到一个依此从大到小的排列。
li = [88, 100, 66,600, 5555,333,2,1,22,55, 33, 22,1999] for a in range(len(li)): for i in range(len(li)-1):
#因为nex是+1的,最后一个nex会超过len长度一个,所以len先-1。这个for循环执行一遍冒泡排序找出最大值,上层for循环执行多次冒泡找出第二大、第三大...
cur = li[i]
nex = li[i+1]
if cur < nex:
temp = cur
li[i] = nex
li[i+1] = temp
print(li)
[5555, 1999, 600, 333, 100, 88, 66, 55, 33, 22, 22, 2, 1]
上面是自己的做法,更标准的做法如下:
li = [88, 100, 66,600,9999995555,333,2,1,22,55, 33, 22,1999]
for a in range(1,len(li)):
for i in range(len(li)-a): a每次减1,就是让最后得到的最大或最小值(取决于> or <)不参与下次循环比较
cur = li[i]
nex = li[i+1]
if cur > nex:
temp = cur
li[i] = nex
li[i+1] = temp
print(li)

浙公网安备 33010602011771号