演算法 插入排序

2021-09-02 22:22:52 字數 872 閱讀 6546

插入排序是最直觀和自然的排序,它是從左到右,將乙個數從它為起始位置 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 =

0while vac_loc >0:

if arr[vac_loc-1]

<= vac:

loc = vac_loc

break

arr[vac_loc]

= arr[vac_loc-1]

vac_loc-=

1return loc

definsert_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)

)

插入排序演算法

插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...

演算法 插入排序

include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...

插入排序演算法

下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...