冒泡排序
原理
通过比较数列相邻的元素大小,交换位置,从而将最大的或者最小的数一层层浮到顶端,像汽水中的气泡一样,故称冒泡排序。
总结:
1.对于一个长度为n的数列需要经过n-1轮的排序。
2.每一轮排序需要经过n-i次交换位置。i为第几轮。
时间复杂度
从下面的代码可以看出,长度为5的列表共经过10次排序。
4+3+2+1=10
所以推导长度为n的列表共执行n-1+n-2...+2+1
首尾相加,一共有n-1项,每2项的和为n
=(1+n-1)+(2+n-2)+...
=n×(n-1)÷2
时间复杂度一般忽略低阶,常量,系数三个部分,所以最终最坏时间复杂度为O(n²)
代码实现
a=[9,5,4,3,2]
def bubble(arr):
length=len(arr)
print("原始数列是%s"%arr)
for i in range(length-1):
print("第%s轮"%str(i+1))
for j in range(length-1-i):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
print("第%s次后的结果是%s"%(str(j+1),arr))
return arr
print(bubble(a))
来源:https://www.cnblogs.com/King-Tong/p/12364374.html