1. 程式人生 > >用python 語言實現插入排序

用python 語言實現插入排序

插入排序:

   2,4,3,1,6,7,5

  從2開始執行,放在第一個位置:

    2     4,3,1,6,7,5

  再拿出4,與2比較,比2 大放在2 後面

  2,4      3,1,6,7,5

  再拿出3,與4比較,比4小放在4前面,比2大放在2後面

  2,3,4      1,6,7,5

依次類推,最終取得

 1,2,3,4,5,6,7

# coding:utf-8

def insert_sort(alist):
    """插入排序"""
    n = len(alist)
    # 從右邊的無序數列中取出多少個元素執行如下迴圈
    for j in range(1,n):
        #j = 【1,2,3,n-1】
        #i = 代表內層迴圈開始值
        i = j
        #執行從右邊的無序數列中取出第一個元素,即i位置元素,然後將其插入到前面的正確位置
        while i > 0:
            if alist[i] < alist[i-1]:
                alist[i],alist[i-1] = alist[i-1],alist[i]
                i = i-1
            else:
                break


if __name__ == "__main__":
    li = [54,26,93,17,77,31,44,55,20]
    print(li)
    insert_sort(li)
    print(li)

插入排序的最優複雜度為O(n)(序列已經處於升序序列)

 最壞時間複雜度O(n的2次方)