一圖勝千言,插入排序的核心邏輯如下:
- 將數據分成兩半,前一半是已排好序的,后一半是待排序的
- 每次取后一半中的第一個數,在已排序的一半中,逆序依次比較,找到要插入的位置
- 記錄插入的位置,在最后判斷是否需要插入即可
實現代碼:
def insertionSort(a:list):
for i in range(1,len(a)):
value = a[i]
insert_index = -1
for j in range(i-1,-1,-1):
if value< a[j]:
a[j+1] = a[j]
insert_index = j
else:
break
if insert_index !=-1:
a[insert_index] = value
return a
思考:
為什么插入排序比冒泡排序更常用
關鍵在於賦值操作,冒泡排序需要3次,而插入排序只需要1次