1. 程式人生 > >常見排序演算法之氣泡排序

常見排序演算法之氣泡排序

常見排序演算法之氣泡排序

氣泡排序(Bubble Sort),是一種較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從小到大、首字母從A到Z)錯誤就把他們交換過來。

  • 氣泡排序演算法的運作如下:
  1. 比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後已選出的元素。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。(每迴圈一次從未排序元素中選出一個最大者)
    第一次比較元素

程式碼實現

def bubble_sort(alist):
    for j in range(len(alist)-1,0,-1):
        # j表示每次遍歷需要比較的次數,是逐漸減小的
        for i in range(j):
            if alist[i] > alist[i+1]:
                alist[i], alist[i+1] = alist[i+1], alist[i]

li = [24,16,18,36,12,45,8]
bubble_sort(li)
print(li)

時間複雜度

  • 最優時間複雜度:O(n)
  • 最壞時間複雜度:O(n2)
  • 穩定性:穩定