1. 程式人生 > >Python排序算法之插入排序

Python排序算法之插入排序

int 分享圖片 python ima 思想 元素 com color 臨時

插入排序的主要思想是每次取一個列表元素與列表中已經排序好的列表段進行比較,然後插入從而得到新的排序好的列表段,最終獲得排序好的列表。

比如,待排序列表為[49,38,65,97,76,13,27,49],則比較的步驟和得到的新列表如下:

(帶有背景顏色的列表段是已經排序好的,紅色背景標記的是執行插入並且進行過交換的元素)

技術分享圖片

從百度百科上盜了一張圖:

技術分享圖片

Python實現代碼如下:

 1 # Coded by Alvin
 2 
 3 
 4 def InsertSort(myList):
 5     #獲取列表長度
 6     length = len(myList)
 7 
 8     for i in range(1,length):
 9         #設置當前值前一個元素的標識
10         j = i - 1
11         
12         #如果當前值小於前一個元素,則將當前值作為一個臨時變量存儲,將前一個元素後移一位
13         if(myList[i] < myList[j]):
14             temp = myList[i]
15             myList[i] = myList[j]
16             
17             #繼續往前尋找,如果有比臨時變量大的數字,則後移一位,直到找到比臨時變量小的元素或者達到列表第一個元素
18             j = j-1
19             while j>=0 and myList[j] > temp:
20                 myList[j+1] = myList[j]
21                 j = j-1
22 
23             #將臨時變量賦值給合適位置
24             myList[j+1] = temp
25 
26 
27 myList = [49,38,65,97,76,13,27,49]
28 InsertSort(myList)
29 print(myList)

Python排序算法之插入排序