希爾排序又稱“縮小增量排序”,是對直接插入排序方法的改造。
希爾排序是一種不穩定的排序方法。基本思想是將整個待排記錄序列分割成若干子序列,然后分別進行插入排序,帶整個序列中的記錄基本有序時,再對全體記錄進行一次直接插入排序。具體做法是先取定一個小于n的整數d1作為第一增量,把文件的全部記錄分成d1組,將所有距離為d1倍數的記錄放在同一組中,在各組內進程插入排序;然后取第二個增量d2(d2 < d1),重復上述的分組和排序工作,依次類推。直至所取的增量di=1,既所有記錄放在同一組進行直接插入排序為止。
增量序列為5,3,1時,希爾插入排序過程如下圖:
函數如下: