08_資料結構與演算法_插入排序_Python實現
阿新 • • 發佈:2018-11-19
""" 插入排序: 其思想類似於手中有一些亂序的撲克牌,要將其整理為有序的。 首先拿第二張,與之前一張對比,小於第一張時交換順序,大於時保持不動。 這樣i輪過後,第i大的牌就會出現在第i個位置。 """ import random def insertion_sort(L): #從下標1開始遍歷 for j in range(1,len(L)): key = L[j] #取前一個元素的下標 i = j - 1 while i >= 0 and L[i] > key: #判斷前一個元素大於當前元素時 #當前元素指向上一個元素 L[i+1] = L[i] i = i - 1 #如果判斷成功,則上一個元素指向當前元素,否則引用不變 L[i+1] = key return L def test_sort(): L = list(range(10)) L = random.shuffle(L) assert insertion_sort(L) == L if __name__ == "__main__": test_sort()