Focusky完整教程:无限画布与镜头路径实战指南
2026/9/26 9:32:03
插入排序有个问题:如果一个很小的数在数组末尾,它得一步一步往前挪,每次只移一位,太慢了。希尔排序的思路是——先大步跳着排,再小步细调,让元素快速接近正确位置。
希尔排序(Shell Sort)是插入排序的改进版:
初始:[38, 27, 43, 3, 9, 82, 10, 55] 增量gap=4时分组: 组1: 38, 9 → 排序后: 9, 38 组2: 27, 82 → 排序后: 27, 82 组3: 43, 10 → 排序后: 10, 43 组4: 3, 55 → 排序后: 3, 55 第一轮后:[9, 27, 10, 3, 38, 82, 43, 55] → 小的数已经大致挪到了前面! 增量gap=2时分组: 组1: 9, 10, 38, 43 → 已有序 组2: 27, 3, 82, 55 → 排序后: 3, 27, 55, 82 第二轮后:[9, 3, 10, 27, 38, 55, 43, 82] 增量gap=1(普通插入排序): 最终:[3, 9, 10, 27, 38, 43, 55, 82]增量的选择影响效率。常