概念
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
- 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
- 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;
希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
算法步骤
具体实现时,首先选定两个记录间的距离$gap$
,在整个待排序记录序列中将所有间隔为$gap$
的记录分成一组,进行组内直接插入排序,然后再逐渐缩小增量$gap$
,直至选定两个记录间的距离$gap = 1$
为止,此时只有一个子序列,即整个待排序记录序列。
代码实现
function