zoukankan      html  css  js  c++  java
  • 八大排序之冒泡排序

    冒泡排序

    原理

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

    总结:

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

  • 相关阅读:
    [POJ3635]Full Tank? 题解
    洪水题解
    [HNOI2009]最小圈 题解
    Grazing on the Run 题解
    [BZOJ4237]稻草人 题解
    [POJ3783]Balls 题解
    [POI2005]Bank notes 题解
    字符串题解
    pyinstaller利用spec文件打包的使用模板
    Pycharm2020 永久激活
  • 原文地址:https://www.cnblogs.com/King-Tong/p/12364374.html
Copyright © 2011-2022 走看看