#!/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
来源:https://www.cnblogs.com/ikai/p/11589733.html