希爾排序基本思想:先取壹個小於n的整數d1作為第壹個增量,把文件的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同壹個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同壹組中進行直接插入排序為止。
舉例說明:
對於這樣壹個無序的數組5?9?3?2?6?11?8?1?7?4?10?,想把它變成順序遞增的數組1?2?3?4?5?6?7?8?9?10?11。先隔3個元素取壹次:把5?2?8?4取了出來,往後搓壹位,把9?6?1?10取出來,再往後搓壹位,又把3?11?7取出來。分別對這三個小組排序成為遞增的序列,再插回去,如圖:
於是得到了第壹趟排序的結果:2?1?3?4?6?7?5?9?11?8?10.現在再以2為間隔重復以上步驟(這次得到的是兩個小組)得到了2?1?3?4?5?7?6?8?11?9?10。最後再以1為間隔再搞壹次(實際上這壹步就是從左到右兩兩比較,調整位置),就得到了想要的結果。
這就是希爾排序,其要義就是先進行宏觀調整,再進行微觀調整。