希尔排序的产生
希尔排序基于插入排序,并添加一些新的特性,从而大大的提高插入排序的执行效率。
插入排序的缺陷,多次移动
假如一个很小的数据在靠右端的位置上,那么要将该数据排序到正确的位置上,则所有的中间数据都需要向右移动一位。
希尔排序的优点
希尔排序通过加大插入排序中元素之间的间隔,并对这些间隔的元素插入排序,从而使得数据可以大幅度的移动。当完成该间隔的排序后,希尔排序会减少数据的间隔在进行排序。依次进行下去。
间隔的计算
间隔h的初始值为1,通过h=3*h+1来循环计算,直到该间隔大于数组的大小时停止。最大间隔为不大于数组大小的最大值。
间隔的减少
可以通过公式h=(h-1)/3来计算。