算法-插入排序

插入排序

  • 思路
插入排序是最直觀和自然的排序,它是從左到右,將一個數從它爲起始位置 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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章