python + 插入排序

時間複雜度爲O(n^2),基本思想就是將無序序列插入到有序序列中。例如要將數組arr=[4,2,8,0,5,1]排序,可以將4看做是一個有序序列(圖中用藍色標出),將[2,8,0,5,1]看做一個無序序列。無序序列中2比4小,於是將2插入到4的左邊,此時有序序列變成了[2,4],無序序列變成了[8,0,5,1]。無序序列中8比4大,於是將8插入到4的右邊,有序序列變成了[2,4,8],無序序列變成了[0,5,1]。以此類推,最終數組按照從小到大排序。

def insert_sort(list):
    _len = len(list)
    for i in range(1, _len):
        temp = list[i]
        for j in range(i, -1, -1):
            # j爲當前位置,試探j-1位置
            if temp < list[j - 1]:
                list[j] = list[j - 1]
            else:
                # 位置確定爲j
                break
        list[j] = temp

    return list


list = [1, 10, 3, 5, 2, 4, 6, 7, 9, 8]

print( insert_sort(list) )

 

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