1. 程式人生 > >資料結構之python實現冒泡演算法(bubblesort)

資料結構之python實現冒泡演算法(bubblesort)

1.氣泡排序思想

  • 比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。
  • 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
  • 針對所有的元素重複以上的步驟,除了最後一個。
  • 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

2.程式碼實現

2.1 實現最優版

    """氣泡排序"""""
  
    def bubble_sort(li):
        """最優版"""""
	 n = len(li)
    # 內部迴圈,一趟結束,會把最大的移動到最後面,共n-1趟
    for j in range
(n-1): # 內部迴圈執行一趟後,如果資料沒有交換過,則證明有序 flag = 0 # 需要遊標從0移動n-1 for i in range(n-1-j): # 每一次讓遊標位置與下一個資料比較,如果前面資料大於後面則進行交換 if li[i] > li[i+1]: li[i],li[i+1] = li[i+1],li[i] flag += 1 if flag == 0: return
if __name__ == '__main__': li = [3,1,4,5,2] bs = bubble_sort(li) print(li)

2.2 精簡版

def bubble_sort(li):
    """精簡版"""
    n = len(li)
    for i in range(n-1):
        for j in range(n-1-i):
            if li[j] > li[j+1]:
                li[j],li[j+1] = li[j+1]
,li[j] if __name__ == '__main__': li = [3,1,4,5,2] bs = bubble_sort(li) print(li)

3 時間複雜度和穩定性分析

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

以上內容僅是代表個人總結 若有錯誤之處,還請批評指正,歡迎大家一起學習!