八大排序之冒泡排序

冒泡排序

原理

通过比较数列相邻的元素大小,交换位置,从而将最大的或者最小的数一层层浮到顶端,像汽水中的气泡一样,故称冒泡排序。

总结:

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