希尔排序又称又被称为缩小增量排序,也是插入排序的一种,但是和直接插入排序相比效率有了较大的改进,直接插入排序的平均时间复杂度为O(n^2),当序列为正序时可以达到O(n),由此可见如果每次直接插入排序的序列都是大致有序的,那么时间复杂度会有很大的提升。这就是希尔排序的基本思想。
希尔排序是把要进行排序的序列用不同的增量分为不同的若干组子序列,分别对他们进行直接插入排序,第一趟增量最大,分的组最少,然后依次减小增量,分成越来越多的子序列再进行直接插入排序,直到每一组子序列的个数为1的时候就完成了希尔排序。
代码如下: