冒泡排序屬於交換排序
相鄰元素兩兩比較大小,若是前面比後面大,就交換位置,最後一個元素將是最大的數
時間複雜度爲O(n²)優化
優化點:
- 冒泡法須要一輪一輪進行比較,若是某一趟中,一次都沒有交換,那就說明序列已經排好序了,就能夠中止循環了code
l = [1, 9, 8, 5, 6, 7, 4, 3, 2] # 一共處理len(l)-1趟 for i in range(len(l) - 1): # 定義一個開關,默認進來沒有交換過,設爲False flag = False # 逐個兩兩比較,每處理一趟固定一個數,比較次數爲len(l)-1-i次 for j in range(len(l)-1 - i): # 若是前面比後面大,則互換位置 if l[j] > l[j+1]: l[j], l[j+1] = l[j+1], l[j] # 若是交換過,則設置開關爲True flag = True # 若是沒有交換過,就中止循環 if not flag: break print(l) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
參考:
https://zh.wikipedia.org/wiki/冒泡排序
https://en.wikipedia.org/wiki/Bubble_sort排序