在未排序序列中,構建乙個子排序序列,直到全部資料排序完成
將待排序的數,插入到已排序的序列中合適的位置
增加乙個哨兵,放入待比較值,讓他後面已經排好序的序列比較,找到合適的插入點
它屬於穩定排序演算法
#直接插入排序
num =[2
,12,10
,5,8
,7,4
,6,1
,0]num =
[none
]+ num
#[none, 2, 12, 9, 10]
length =
len(num)
for i in
range(2
, length)
: num[0]
= num[i]
# 哨兵位賦值
j = i -
1if num[j]
> num[0]
:# 一但進入if說明,發生挪動
while num[j]
> num[0]
:# 進入此迴圈說明比哨兵大的值向右挪動
num[j+1]
= num[j]
j -=
1 num[j+1]
= num[0]
# 插入有序區中合適的位置
print
(num[1:
])
結果:
[0,
1,2,
4,5,
6,7,
8,10,
12]
Python插入排序演算法
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。插入排序 n len alist...
python 插入排序演算法
描述 插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o n 2 是穩定的排序方法。插入演算法把要排序的陣列分成兩部分 第一部分包含了這個陣列的所有元素,但將最後乙個元素除外 讓陣列多乙個空間才有插入的位置 ...
Python演算法 插入排序
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排序元素...