排序和搜索(六)——插入排序的python實現

【插入排序】有這麼一組數25,46,89,75,32。

第一個數25先放在第一個位置,不管。

25    
再看第二個數46,與前面25比較,大,順理成章放在第二個位置。

2546   
再看第三個數89,與鄰近的前面的46比較,大,由於前面已經排好序,故推出比25也大,放在第三個位置

254689  

再看第4個數75,與鄰近的前面的89比較,小,89後移。再往前比,與鄰近的前面的46比較,大類推,放在46和89之間

25467589 
同理,最後形成 

2532467589
【分析】插入排序的時間複雜度爲0(n2),移位的處理要比交換的處理少

【代碼】

#插入排序

def insertSort(alist):
    for i in range(1,len(alist)):
        value=alist[i]
        position=i
        while position>0 and value<alist[position-1]:
            alist[position]=alist[position-1]
            position=position-1
        alist[position]=value
    return alist
print(insertSort([25,46,89,75,32]))
【結果】
[25, 32, 46, 75, 89]


發佈了28 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章