zoukankan      html  css  js  c++  java
  • 数据结构之排序一:冒泡排序

    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)

    稳定性:稳定

  • 相关阅读:
    ubuntu下ftp服务
    git远程提交失败
    ImportError: libQtTest.so.4: cannot open shared
    python-----群发图片
    pytorch------cpu与gpu load时相互转化 torch.load(map_location=)
    python-----用多张图片生成视频
    python-----实现微信撤回消息还原
    not syncing : corrupted stack end detected inside scheduler
    树莓派-----中文输入法设置
    树莓派-----局域网电脑远程桌面连接
  • 原文地址:https://www.cnblogs.com/mengxiangtiankongfenwailan/p/11338855.html
Copyright © 2011-2022 走看看