希尔排序算法动画演示

点击"生成随机数组"开始
待排序
比较中
交换中
已排序
间隔点

希尔排序算法说明

希尔排序(Shell Sort)是插入排序的一种改进版本,它通过比较相距一定间隔的元素来工作。希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。

希尔排序的主要步骤:

  1. 选择一个增量序列 t1, t2, ..., tk,其中 ti > tj (i < j), tk = 1
  2. 按增量序列个数 k,对序列进行 k 趟排序
  3. 每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

希尔排序的时间复杂度与增量序列的选择有关,平均时间复杂度约为 O(n^1.3)。