# 原理:首先索引从1开始,每执行完一轮加1。 # 每一轮都从遍历的索引位置,按照索引减小的方向,将每两个相邻的元素进行比较,进行排序 # 因此,当索引为1,保证索引为0,1的元素是有序的 # 索引为2,保证索引为0,1,2的元素是有序的 # 最终执行完所有轮之后,保证所有元素都是有序的 import random def insert_sort(arr): for i in range(1, len(arr)): j = i - 1 while j >= 0 and arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] j -= 1 arr = list(range(20)) random.shuffle(arr) print(arr) # [16, 7, 1, 18, 2, 3, 14, 19, 10, 6, 11, 12, 17, 15, 8, 13, 4, 5, 9, 0] insert_sort(arr) print(arr) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]