def insert_sort(li): n = len(li) # 从第一个元素开始,认为已经被排序 for i in range(1, n): # 后一个元素和前一个元素比较 # 如果比前一个小 if li[i] < li[i - 1]: # 1 4 3 2 # 将这个数取出 tem = li[i] # 2 # 保存下标 index = i # 3 # 从后面向前面依次比较每个元素 for j in range(i - 1, -1, -1): if li[j] > tem: # 如果这个数字比 li[j + 1] = li[j] # 交换后,更新下标 index = j else: break # 最后一步:找到需要插入的元素 li[index] = tem return li if __name__ == '__main__': print(insert_sort([11,4,21,5,2,12]))