一个数组元素为:[11,14,25,6,7,30,9,17,1],使⽤用希尔排序,以4作为初始增
量量,每次排序增量量减1,按照从⼩小到⼤大的顺序进⾏行行排序,第三次排序后的排列列为
希尔排序是插入排序的改进版,核心思想是:先让距离较远的元素有序,再逐步缩小间隔,最后进行一次完整的插入排序。
为什么这样做?
初始数组:[11,14,25,6,7,30,9,17,1]
按间隔4分组,每组独立进行插入排序:
索引: 0 1 2 3 4 5 6 7 8 原始: 11 14 25 6 7 30 9 17 1 分组: 组1(间隔4): 11 → 7 → 1 排序后: 1,7,11 组2(间隔4): 14 → 30 排序后: 14,30 组3(间隔4): 25 → 9 排序后: 9,25 组4(间隔4): 6 → 17 排序后: 6,17 结果: [1, 14, 9, 6, 7, 30, 25, 17, 11]
当前: [1, 14, 9, 6, 7, 30, 25, 17, 11] 分组: 组1: 1 → 6 → 25 排序后: 1,6,25 组2: 14 → 7 → 17 排序后: 7,14,17 组3: 9 → 30 → 11 排序后: 9,11,30 结果: [1, 7, 9, 6, 14, 11, 25, 17, 30]
当前: [1, 7, 9, 6, 14, 11, 25, 17, 30] 分组: 组1(偶数位): 1 → 9 → 14 → 25 → 30 排序后: 1,9,14,25,30 组2(奇数位): 7 → 6 → 11 → 17 排序后: 6,7,11,17 结果: [1, 6, 9, 7, 14, 11, 25, 17, 30]
答案:C
1. 分组方式:增量为n时,索引相差n的元素为一组
2. 组内排序:每组独立进行插入排序
3. 交错重组:排序后按原索引顺序重新组合
4. 逐步收敛:增量递减,最终增量为1时完成最终排序