zoukankan      html  css  js  c++  java
  • Python 算法之冒泡排序

    冒泡排序基本思想

    对于列表a依次比较两个相邻元素的大小,若a[j]大于a[j+1]则进行交换,第一趟把最大的数换到最后,依次类推生成有序的列表。
    N个元素的列表要排序完成,需N-1趟排序(例:如果N是3(a = [10,5,2]),那么需要2趟依次把10和5进行移动生成有序列表[2,5,10])。
    每一趟排序,就会少比较一次,因为每进行一趟排序都会找出余下列表中的一个较大值
    每i趟的排序次数为(N-i-1)次,可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。

    冒泡排序默认升序排列,如果需要降序则把内层循环中的>号改成<号

    a = [10,5,2,4,1,0]
    c = 0
    print("        %s" % a)
    for i in range(len(a)-1):
        print("Outer Loop:%d" % i)
        for j in range(len(a)-1-i):
            print("    Inner Loop:%d" % j)
            if a[j] > a[j+1]:
                a[j+1], a[j] = a[j], a[j+1]
            print("        %s" % a)
            c += 1
    print(c)

    输出结果:

            [10, 5, 2, 4, 1, 0]
    Outer Loop:0
        Inner Loop:0
            [5, 10, 2, 4, 1, 0]
        Inner Loop:1
            [5, 2, 10, 4, 1, 0]
        Inner Loop:2
            [5, 2, 4, 10, 1, 0]
        Inner Loop:3
            [5, 2, 4, 1, 10, 0]
        Inner Loop:4
            [5, 2, 4, 1, 0, 10]
    Outer Loop:1
        Inner Loop:0
            [2, 5, 4, 1, 0, 10]
        Inner Loop:1
            [2, 4, 5, 1, 0, 10]
        Inner Loop:2
            [2, 4, 1, 5, 0, 10]
        Inner Loop:3
            [2, 4, 1, 0, 5, 10]
    Outer Loop:2
        Inner Loop:0
            [2, 4, 1, 0, 5, 10]
        Inner Loop:1
            [2, 1, 4, 0, 5, 10]
        Inner Loop:2
            [2, 1, 0, 4, 5, 10]
    Outer Loop:3
        Inner Loop:0
            [1, 2, 0, 4, 5, 10]
        Inner Loop:1
            [1, 0, 2, 4, 5, 10]
    Outer Loop:4
        Inner Loop:0
            [0, 1, 2, 4, 5, 10]
    15
    冒泡算法时间复杂度:
    最优时间复杂度O(n) :正序情况,只需要一次外层循环,n-1次比较
    最坏时间复杂度O(n2):逆序情况,需要n-1一次外层循环,每i趟外层循环执行n-1-i次内层循环

    如果没有一直坚持,也不会有质的飞跃,当生命有了限度,每个人的价值就会浮现。

    船长博客,期待共同交流提高!

    本文如对您有帮助,记得点击右下边小球【赞一下】,热烈期待您关注博客 n(*≧▽≦*)n

    0成本创业_月入5000被动收入

  • 相关阅读:
    [BZOJ1303][CQOI2009]中位数图
    [BZOJ1192][HNOI2006]鬼谷子的钱袋
    9.5题解
    9.3题解
    9.2题解
    9.1题解
    8.29题解
    8.28题解
    8.23<2>题解
    8.23<1>题解
  • 原文地址:https://www.cnblogs.com/v5captain/p/14225801.html
Copyright © 2011-2022 走看看