八大排序之冒泡排序
冒泡排序 原理 通过比较数列相邻的元素大小,交换位置,从而将最大的或者最小的数一层层浮到顶端,像汽水中的气泡一样,故称冒泡排序。 总结: 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