插入排序
- 思路
插入排序是最直觀和自然的排序,它是從左到右,將一個數從它爲起始位置 loc ,從右向左,進行比較,如果
array[loc-1] < array[loc] 或者 loc = 0 ,那麼就將這個數插入 loc 位置,否則 loc 位置左移 ( loc = loc -1 )
繼續進行比較,直到數組有序。
- 算法複雜度
插入排序的最壞時間複雜度爲: O(n) = n^2,平均複雜度爲: O(n) = n^2
python實現
def shift_vac(arr,vac_loc,vac):
loc = 0
while vac_loc > 0:
if arr[vac_loc-1] <= vac:
loc = vac_loc
break
arr[vac_loc] = arr[vac_loc-1]
vac_loc-=1
return loc
def insert_sort(arr):
for i in range(0,len(arr)):
v = arr[i]
loc = shift_vac(arr,i,v)
arr[loc] = v
return arr
us = [1,2,0,-1]
us1 = [6,8,0,2,1]
print(insert_sort(us))
print(insert_sort(us1))