核心思想

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)$
稳定性: 稳定