'''
冒泡算法的原理是经过每一轮的比较都能确定这一轮的最大数
所以到后面的比较次数都是依次少一
例如[3,4,9,1,5]
第一轮比较,比较4次
由于是有5个数,相邻的两个数两两比较,5个数需要比较4次,N个数,需要比较N-1次
3,4比较不用变
4,9比较不用变
9,1比较要交换位置 变成1,9
9,5比较需要交换位置,变成5,9
这样就完成了第一轮的比较,第一轮确定了列表的最大一位数为9,之后的比较就可以把9祛除了
再去比较其他的数就好了,应为既是是比较了,位置也是不会改变,浪费资源而已
经过第一轮的比较列表变成了[3,4,1,5,9],第二轮只需要比较三次
第二轮由于最后一个确定了,只需要比较三次就好了
3,4比较不用变
4,1比较需要交换,变成1,4
4,5比较,不用变,
由此我们确定了第二大的数是5
列表变成了[3,1,4,5,9]
第三轮比较,只需要比较两次
3,1比较需要交换,变成1,3
3,4比较不用改变,
列表变成了[1,3,4,5,9]
第四轮比较,只需要完成一次就行了
1,3比较不需要变化位置,
因此最终的列表为[1,3,4,5,9]
'''
from random import randint
l1 = [ randint(1,100) for _ in range(10)]
print(l1)
def dubbel_sort(arr):
k = 0
for i in range(len(arr) - 1):
for j in range(len(arr) - 1 - i):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
k +=1
print('经过%s次的比较得出的结果'%k)
return arr
print(dubbel_sort(l1))
[90, 8, 55, 12, 71, 6, 72, 72, 60, 5]
经过25次的比较得出的结果
[5, 6, 8, 12, 55, 60, 71, 72, 72, 90]
来源:51CTO
作者:Forande
链接:https://blog.51cto.com/853056088/2436340