八大排序之冒泡排序

不羁的心 提交于 2020-02-25 22:58:14

冒泡排序

原理

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

总结:

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))

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!