用python 語言實現插入排序
阿新 • • 發佈:2019-01-05
插入排序:
2,4,3,1,6,7,5
從2開始執行,放在第一個位置:
2 4,3,1,6,7,5
再拿出4,與2比較,比2 大放在2 後面
2,4 3,1,6,7,5
再拿出3,與4比較,比4小放在4前面,比2大放在2後面
2,3,4 1,6,7,5
依次類推,最終取得
1,2,3,4,5,6,7
# coding:utf-8 def insert_sort(alist): """插入排序""" n = len(alist) # 從右邊的無序數列中取出多少個元素執行如下迴圈 for j in range(1,n): #j = 【1,2,3,n-1】 #i = 代表內層迴圈開始值 i = j #執行從右邊的無序數列中取出第一個元素,即i位置元素,然後將其插入到前面的正確位置 while i > 0: if alist[i] < alist[i-1]: alist[i],alist[i-1] = alist[i-1],alist[i] i = i-1 else: break if __name__ == "__main__": li = [54,26,93,17,77,31,44,55,20] print(li) insert_sort(li) print(li)
插入排序的最優複雜度為O(n)(序列已經處於升序序列)
最壞時間複雜度O(n的2次方)