思路
''' 假设有一个有序区(一开始只有一个元素),依次在无序区中选择一个元素 将其按照大小插入到有序区中,直到所有无序区的元素都插入到有序区,排序 结束 时间复杂度:O(n²) '''
@clocked
def insert_sort(li):
li_len = len(li)
for i in range(1, li_len): # 无序区[i,li_len)
j = i - 1 # 有序区的索引
tmp = li[i]
while j >= 0 and tmp < li[j]: # 只要当前抽到的元素小于有序区中的元素,有效区中的元素就后移一位
li[j + 1] = li[j]
j -= 1
else:
li[j + 1] = tmp
插入排序
测试
同步更新于个人博客系统:插入排序