算法理解
类似于大部分人整理扑克牌,从第二张开始(第二张牌作为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)