希爾排序的產生
希爾排序基于插入排序碗旅,并添加一些新的特性,從而大大的提高插入排序的執(zhí)行效率镜悉。
插入排序的缺陷祟辟,多次移動
假如一個很小的數(shù)據(jù)在靠右端的位置上,那么要將該數(shù)據(jù)排序到正確的位置上侣肄,則所有的中間數(shù)據(jù)都需要向右移動一位旧困。
希爾排序的優(yōu)點
希爾排序通過加大插入排序中元素之間的間隔,并對這些間隔的元素插入排序稼锅,從而使得數(shù)據(jù)可以大幅度的移動吼具。當完成該間隔的排序后,希爾排序會減少數(shù)據(jù)的間隔在進行排序矩距。依次進行下去拗盒。
間隔的計算
間隔h的初始值為1,通過h=3*h+1來循環(huán)計算锥债,直到該間隔大于數(shù)組的大小時停止陡蝇。最大間隔為不大于數(shù)組大小的最大值。
間隔的減少
可以通過公式h=(h-1)/3來計算哮肚。