核心思想
1、定义一个已排序序列(初始一般指定第一个元素),将已排序序列后一个元素与已排序序列中每个元素从后往前比较,如果未排序元素小则交换,否则说明已经到正确位置,终止循环。
2、已排序序列范围向后增加1,重复步骤2,直到已排序序列长度等于原序列长度
def insert_sort(lst):
"""定义一个已排序序列,将剩余未排序序列依次插入到已排序序列"""
n = len(lst)
for i in range(1, n):
for j in range(i, 0, -1):
if lst[j] < lst[j-1]:
lst[j], lst[j-1] = lst[j-1], lst[j]
else:
break
时间复杂度:
最优:$O(n)$
最坏:$O(n^2)$
平均:$O(n^2)$
空间复杂度: $O(1)$
稳定性: 稳定