排序和搜索(六)——插入排序的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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章