插入排序

算法理解

类似于大部分人整理扑克牌,从第二张开始(第二张牌作为key牌),与前面n张牌从后往前比较,如果前面的第 j 张牌小于(用于升序时)key牌,则第 j 张牌与key牌(即第 j+1 张牌)互换

循环不变式

for循环的每次循环开始时,子数组A[1..j-1]由A[1..j-1]中的元素组成,且已按序排列。

增长量级

最好情况:

最坏情况:

代码实现 - Python

import random

def insert_sort(A):
    for i in range(1, len(A)):
        key = A[i]
        j = i-1
        while j>=0 and A[j] > key:
            A[j+1] = A[j]
            A[j] = key
            j -= 1

list_ori = []
for i in range(10):
    list_ori.append(random.randrange(0, 5000))

print(list_ori)
insert_sort(list_ori)
print(list_ori)
posted @ 2018-06-15 01:35  yc紫日  阅读(88)  评论(0编辑  收藏  举报