python 冒泡排序

夙愿已清 提交于 2019-11-30 12:56:14
#!/usr/bin/python

def bubble_sort(li):
    for i in range(len(li)-1): #躺数循环 最后一个数不用比较 已经是最大或者最小的数 所以躺数减少1
        exchange = False  #增加标识 以减少循环次数 
        for j in range(len(li)-i-1): # len(li)-i 表示列表中剩下的无序的列表。每比较一次 则剩下的列表长度减少1。无序列表躺数
            if li[i] > li[j+1]: #第一个数和第二个进行比较 如果第一个数大于第二个数就进行交换(升序)
            #if li[i] < li[j+1]: 第一个数小于第二个数就进行交换(降序)
            li[i],li[j+1] = li[j+1],li[i]
            exchange = True # 如果发生交换,那么证明列表中还是有需要进行比较 即无序状态
        if not exchange:  #如果没有发生改变,那么已经排序完毕,结束循环(对于不是非常混乱的列表,可以减少循环次数,节省时间,结束算法即可)
                return  

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