• 数据结构之排序一:冒泡排序


    def bubbleSort(myList):
        # 首先获取list的总长度,为之后的循环比较作准备
        length = len(myList)
        # 一共进行几轮列表比较,一共是(length-1)轮
        for i in range(0, length):
            print("i",i)
            # 每一轮的比较,注意range的变化,这里需要进行length-1-长的比较,注意-i的意义(可以减少比较已经排好序的元素)
            for j in range(0, length - 1 - i):
                # 交换
                if myList[j] > myList[j + 1]:
                    tmp = myList[j]
                    myList[j] = myList[j + 1]
                    myList[j + 1] = tmp# 打印每一轮交换后的列表
            print(myList)
            print("=============================")
        return myList

    改进:

    def bubbleSort(myList):
        # 首先获取list的总长度,为之后的循环比较作准备
        length = len(myList)
    
        # 一共进行几轮列表比较,一共是(length-1)轮
        for i in range(0, length):
            print("i",i)
            flag = False  # 改进版本,如果本来就是有序的就只需要比较一趟时间复杂度为O(n)
    
            # 每一轮的比较,注意range的变化,这里需要进行length-1-长的比较,注意-i的意义(可以减少比较已经排好序的元素)
            for j in range(0, length - 1 - i):
    
                # 交换
                if myList[j] > myList[j + 1]:
                    tmp = myList[j]
                    myList[j] = myList[j + 1]
                    myList[j + 1] = tmp
                    flag = True
    
            # 打印每一轮交换后的列表
            print(myList)
            print("=============================")
            if flag == False:
                break
        return myList

    时间复杂度:

      平均:O(n^2)

      最好:O(n)  (递增/递减)

      最坏:O(n^2) (递减/递增)

    空间复杂度:O(1)

    稳定性:稳定

  • 相关阅读:
    第五天
    第四天
    第三天
    四则运算2
    对于搜狗输入法
    用户及用户场景分析
    总结
    第一阶段总结
    第七天
    第六天
  • 原文地址:https://www.cnblogs.com/mengxiangtiankongfenwailan/p/11338855.html
Copyright © 2020-2023  润新知