Python还是用截图来显示程序,因为缩进很重要。
运行的过程:
1 1 [3, 5, 4, 7, 2, 8, 6, 9, 1]
2 2 [3, 4, 5, 7, 2, 8, 6, 9, 1]
4 4 [3, 4, 5, 2, 7, 8, 6, 9, 1]
4 3 [3, 4, 2, 5, 7, 8, 6, 9, 1]
4 2 [3, 2, 4, 5, 7, 8, 6, 9, 1]
4 1 [2, 3, 4, 5, 7, 8, 6, 9, 1]
6 6 [2, 3, 4, 5, 7, 6, 8, 9, 1]
6 5 [2, 3, 4, 5, 6, 7, 8, 9, 1]
8 8 [2, 3, 4, 5, 6, 7, 8, 1, 9]
8 7 [2, 3, 4, 5, 6, 7, 1, 8, 9]
8 6 [2, 3, 4, 5, 6, 1, 7, 8, 9]
8 5 [2, 3, 4, 5, 1, 6, 7, 8, 9]
8 4 [2, 3, 4, 1, 5, 6, 7, 8, 9]
8 3 [2, 3, 1, 4, 5, 6, 7, 8, 9]
8 2 [2, 1, 3, 4, 5, 6, 7, 8, 9]
8 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
原始: 1 1 [5, 3, 4, 7, 2, 8, 6, 9, 1]
交换: 1 1 [3, 5, 4, 7, 2, 8, 6, 9, 1]
原始: 2 2 [3, 5, 4, 7, 2, 8, 6, 9, 1]
交换: 2 2 [3, 4, 5, 7, 2, 8, 6, 9, 1]
原始: 3 3 [3, 4, 5, 7, 2, 8, 6, 9, 1]
原始: 4 4 [3, 4, 5, 7, 2, 8, 6, 9, 1]
交换: 4 4 [3, 4, 5, 2, 7, 8, 6, 9, 1]
交换: 4 3 [3, 4, 2, 5, 7, 8, 6, 9, 1]
交换: 4 2 [3, 2, 4, 5, 7, 8, 6, 9, 1]
交换: 4 1 [2, 3, 4, 5, 7, 8, 6, 9, 1]
原始: 5 5 [2, 3, 4, 5, 7, 8, 6, 9, 1]
原始: 6 6 [2, 3, 4, 5, 7, 8, 6, 9, 1]
交换: 6 6 [2, 3, 4, 5, 7, 6, 8, 9, 1]
交换: 6 5 [2, 3, 4, 5, 6, 7, 8, 9, 1]
原始: 7 7 [2, 3, 4, 5, 6, 7, 8, 9, 1]
原始: 8 8 [2, 3, 4, 5, 6, 7, 8, 9, 1]
交换: 8 8 [2, 3, 4, 5, 6, 7, 8, 1, 9]
交换: 8 7 [2, 3, 4, 5, 6, 7, 1, 8, 9]
交换: 8 6 [2, 3, 4, 5, 6, 1, 7, 8, 9]
交换: 8 5 [2, 3, 4, 5, 1, 6, 7, 8, 9]
交换: 8 4 [2, 3, 4, 1, 5, 6, 7, 8, 9]
交换: 8 3 [2, 3, 1, 4, 5, 6, 7, 8, 9]
交换: 8 2 [2, 1, 3, 4, 5, 6, 7, 8, 9]
交换: 8 1 [1, 2, 3, 4, 5, 6, 7, 8, 9]
这样就可以清楚地了解插入排序的过程了,尤其是黄色背景标出的两组。插入排序就是每次将一个未排序元素插入到已排序部分的合适位置。其实用“插入”词容易让人误会,让AI做下解释工作:初始数组: [5, 3, 4, 7, 2, 8, 6, 9, 1]
【第1轮】拿元素 3 (位置1),向前插入...
↳ 与位置0交换 → [3, 5, 4, 7, 2, 8, 6, 9, 1]
插入完成,最终位置0: [3, 5, 4, 7, 2, 8, 6, 9, 1]
【第2轮】拿元素 4 (位置2),向前插入...
↳ 与位置1交换 → [3, 4, 5, 7, 2, 8, 6, 9, 1]
插入完成,最终位置1: [3, 4, 5, 7, 2, 8, 6, 9, 1]
【第3轮】拿元素 7 (位置3),向前插入...
插入完成,最终位置3: [3, 4, 5, 7, 2, 8, 6, 9, 1]
【第4轮】拿元素 2 (位置4),向前插入...
↳ 与位置3交换 → [3, 4, 5, 2, 7, 8, 6, 9, 1]
↳ 与位置2交换 → [3, 4, 2, 5, 7, 8, 6, 9, 1]
↳ 与位置1交换 → [3, 2, 4, 5, 7, 8, 6, 9, 1]
↳ 与位置0交换 → [2, 3, 4, 5, 7, 8, 6, 9, 1]
插入完成,最终位置0: [2, 3, 4, 5, 7, 8, 6, 9, 1]
【第5轮】拿元素 8 (位置5),向前插入...
插入完成,最终位置5: [2, 3, 4, 5, 7, 8, 6, 9, 1]
【第6轮】拿元素 6 (位置6),向前插入...
↳ 与位置5交换 → [2, 3, 4, 5, 7, 6, 8, 9, 1]
↳ 与位置4交换 → [2, 3, 4, 5, 6, 7, 8, 9, 1]
插入完成,最终位置4: [2, 3, 4, 5, 6, 7, 8, 9, 1]
【第7轮】拿元素 9 (位置7),向前插入...
插入完成,最终位置7: [2, 3, 4, 5, 6, 7, 8, 9, 1]
【第8轮】拿元素 1 (位置8),向前插入...
↳ 与位置7交换 → [2, 3, 4, 5, 6, 7, 8, 1, 9]
↳ 与位置6交换 → [2, 3, 4, 5, 6, 7, 1, 8, 9]
↳ 与位置5交换 → [2, 3, 4, 5, 6, 1, 7, 8, 9]
↳ 与位置4交换 → [2, 3, 4, 5, 1, 6, 7, 8, 9]
↳ 与位置3交换 → [2, 3, 4, 1, 5, 6, 7, 8, 9]
↳ 与位置2交换 → [2, 3, 1, 4, 5, 6, 7, 8, 9]
↳ 与位置1交换 → [2, 1, 3, 4, 5, 6, 7, 8, 9]
↳ 与位置0交换 → [1, 2, 3, 4, 5, 6, 7, 8, 9]
插入完成,最终位置0: [1, 2, 3, 4, 5, 6, 7, 8, 9]
✅ 最终排序结果: [1, 2, 3, 4, 5, 6, 7, 8, 9]
每天进步一点点!