插入排序是最直觀和自然的排序,它是從左到右,將乙個數從它為起始位置 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,直到找到已排序的元素小於或者等於新元素的位置 將...