☰
希尔排序:分组插入的优化
2026/9/26 6:07:38 网站建设 项目流程

希尔排序:分组插入的优化

插入排序有个问题:如果一个很小的数在数组末尾,它得一步一步往前挪,每次只移一位,太慢了。希尔排序的思路是——先大步跳着排,再小步细调,让元素快速接近正确位置。

一、基本思想

希尔排序(Shell Sort)是插入排序的改进版:

  1. 选定一个增量(gap),把数据按间隔分成若干组
  2. 对每组做插入排序
  3. 缩小增量,重复分组和排序
  4. 当增量=1时,做最后一趟插入排序(此时数据已基本有序)
初始:[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]

二、增量序列

增量的选择影响效率。常

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询