參考:菜鳥教程
$ 插入排序(insertion sort)
構建區域性有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。
【例】有乙個推理**書單,現在決定一本一本看,並按喜好度從高到低排序
1.鳥人計畫
2.斜屋犯罪
3.嫌疑人x的獻身
4.占星術殺人魔法
5.十角館事件
6.鐘錶館事件
(如下藍色部分表示有序部分)
看了第一本,暫時放在第一位,1,2,3,4,5,6(接下來拿第2本和前面的比)
看了第二本覺得更好看,2,1,3,4,5,6(接下來拿第3本和前面的比)
看了第三本覺得比前面的都好看,3,2,1,4,5,6(接下來拿第4本和前面的比)
看了第四本決定放於第三本之後,3,4,2,1,5,6(接下來拿第5本和前面的比)
……(都好看,太南了,編不下去了……嫌疑人、占星術、鐘錶館更看,剩下三本也不知如何排……)
$ 插入排序**實現
def insertionsort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1 #j由i前乙個索引開始(j的初值),一直到左遇到乙個arr[j]不比key小
while j >=0 and key < arr[j] :
arr[j+1] = arr[j] # key從i-1的位置開始和前面的數逐個比較,key小則「換位置」,
# arr[j] = key #每次比較,key小則換到這個位置,不過由於還要繼續比較,不用此時賦值
j = j-1
arr[j+1] = key # 迴圈條件不滿足,即比到頭了arr[-1+1]=key;或key不比前面的數小,把key賦值給上一輪的位置
#測試陣列
arr = [12, 11, 13, 5, 6]
insertionsort(arr)
print ("排序後的陣列:")
for i in range(len(arr)):
print ("%d" %arr[i])
排序演算法之插入排序(Python3實現)
插入排序有兩種,一種是穩定的直接插入排序,一種是不穩定的希爾插入排序。下面就簡單介紹一下兩個排序演算法以及 實現。coding utf 8 直接插入排序 首先將第乙個元素看成有序序列,從第二個開始,將當前元素 與前面的有序序列的最後乙個元素進行比較,如果當前元素大,則直接i 判斷下乙個 否則插入到前...
插入排序之Python3實現和c 實現
設有一組關鍵字 k1,k2,kn 排序開始就認為 k1 是乙個有序序列 讓 k2 插入上述表長為 1 的有序序列,使之成為乙個表長為 2 的有序序列 然後讓 k3 插入上述表長為 2 的有序序列,使之成為乙個表長為 3 的有序序列 依次類推,最後讓 kn 插入上述表長為 n 1 的有序序列,得乙個表...
python 插入排序
coding utf 8 def insertsort list list 4,1,9,13,34,26,10,7,4 m len list 元素個數 for i in range m 對每乙個元素 min i 當前元素索引 for j in range i 1,m 遍歷後面的所有元素,尋找最小的值...