0.思考
相比于直接插入排序和折半插入排序,有没有可以继续提高效率的方法?
将要移动的元素移动一大步,即让它离排序完成后的最终位置更近一些。
想办法让我们在直接插入排序的时候,使得序列基本有序、个数较少并且当比较一次时,移动一大步,这就是希尔排序思想的出发点。
1.希尔排序
1.1希尔排序的基本思想
先将整个待排记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
注:将记录序列分割成若干个子序列,这样就会:(1)每个序列的元素个数减少(2)分割成若干个子序列,这样进行交换时就可以移动一大步
希尔排序算法的特点:
1)缩小增量
2)多遍插入排序
例1:
(1)以5为增量间隔分割成若干个子序列,也就是说81、35、41是分割好的第一个子序列:
将第一个子序列进行直接插入排序,结果为:
(2)接下来同样的以5间隔插入排序,结果如下: