python 插入排序

看了那麼多插入排序,解釋一下這個方法。

分如下幾個步驟:

1 認爲前面的數列已經完成排序,即按照從小到大的順序,最大的在最後面

2 將接下來要排列的數a[i]存入一個變量中,a[i] = data。即在 i 這個位置挖了一個坑。

3 從已經排序的數組a[j]的末尾開始,即從最大值a[j] 開始,data不太老實,想通過 j 遍歷排列好的部分,找到比自己大的數,然後讓他們依次填坑。如果data大,則循環結束,data乖乖回到原來的坑;如果data小,則a[j]往後移動一位填那個坑,然後再空出自己的位置成爲新的坑:a[j+1] = a[j]。每輪比較  j-- ,直到 j < 0,或者data回到坑中。

4 循環結束後a[j] 的值是小於新來的值的,則a[j+1]的位置上的值就是新來的值data了:a[j+1] = data。


整個的代碼如下:


def Insert_sort(a):
    for i in range(1,len(a)):
        data = a[i]  #先挖一個坑
        j = i - 1 
    
        while j >= 0 and a[j] > data:   #data看是不是比自己大
            a[j+1] = a[j]  #是的話,就讓那個值往後填坑, a[j+1]永遠是data挖的坑
            j = j-1        #接着下一個
    
        a[j+1] = data      #比較結束了,data回到自己剛挖的坑中
    

    return a


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章