python之插入排序


插入排序原理:它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從后向前掃描,找到相應位置並插入。

插入排序核心:假設第一個元素排好,之后的元素對排好的部分從后向前比較並逐一移動。

 

實現技巧:

講一組數據分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增加,待插入組減少。直到待插入組元素個數為0。當然,插入過程中涉及到了元素的移動。

 

為了排序方便,我們一般將數據第一個元素視為有序組,其他均為待插入組。

 下面以升序為例進行一次圖解:

Python代碼:

#coding=utf-8

'''
選擇排序:
思想:插入排序原理很簡單,講一組數據分成兩組,我分別將其稱為有序組與待插入組。
每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,
將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增加,待插入組減少。
直到待插入組元素個數為0。當然,插入過程中涉及到了元素的移動。

實現技巧:為了排序方便,我們一般將數據第一個元素視為有序組,其他均為待插入組。
參考博客:http://blog.csdn.net/llzk_/article/details/51628574
'''


def insertionsort( list ):
    i=1        # 待插入元素下標
    j=0        # 排好序的最后一個元素
    temp=0     # 中間變量用來存儲取出待排序元素的值
    for i in range(len(list)):
        j=i-1
        temp = list[i]
        while(j>=0 and temp<list[j]):
            list[j+1] = list[j]
            j = j-1
        else:
            list[j+1]=temp
    return list


list = [2,1,4,2,4,2,4,2,1,4,3,5,1]

print "排序前數組序列"
print "----------------------------------------"
print list

insertionsort(list)
print "排序后"
print list

執行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM