Python3 插入排序

2021-09-29 03:08:57 字數 1113 閱讀 5944

參考:菜鳥教程  

$ 插入排序(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 遍歷後面的所有元素,尋找最小的值...