插入排序適合於部分有序序列和小規模的資料。其平均時間複雜度為 o(n^2),空間複雜度為 o(1),並且為穩定排序。
插入排序將待排序序列分為有序區 (記為 s 區)和無序區(記為 r 區)。以從小到大的順序為例,每次從 r 區彈出乙個元素 o,要將元素 o 插入到 s 區中恰當位置。從 s 區最右端開始,依次比較 s 區元素與元素 o 的大小。如果元素o 比 s 區元素小,就將 s 區元素後移一位。如果元素 o 大於 s 區元素,就在該元素右邊一位插入元素 o。
import random
# python高效程式設計
definsertionsort
(sequence)
:# 複製序列
seq = sequence[:]
for i in
range(1
,len
(seq)):
value = seq[i]
j = i -
1while j >=
0and seq[j]
> value:
seq[j+1]
= seq[j]
j -=
1# j 在上面多減了 1,要加回來
seq[j+1]
= value
return seq
random.seed(
520)
seq =
[random.randint(1,
100)
for _ in
range(12
)]print
(seq)
print
(insertionsort(seq)
)#[2, 8, 51, 52, 18, 58, 56, 98, 54, 27, 32, 50]
#[2, 8, 18, 27, 32, 50, 51, 52, 54, 56, 58, 98]
插入排序 python實現
以下是插入排序的python函式實現 def insert sort arr for j in range 1,len arr 從list第二個元素開始 key arr j 儲存將要進行插入排序的元素數值 index j 儲存將要進行插入排序的元素的索引 while index 0 and arr ...
python實現插入排序
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。插入排序分析 實現 i 1 1 ...
Python實現插入排序
插入排序 insertion sort 是一種比較簡單直觀的排序演算法。插入排序的步驟 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素作為待插入物件,在已排序序列中從後向前掃瞄 如果該元素小於前乙個元素,則將兩者調換,再與前乙個元素比較 重複第三步,直到前乙個元素不大於待插元素 將新元素...