當前位置:編程學習大全網 - 編程軟體 - 希爾排序的詳解

希爾排序的詳解

希爾排序基本思想:先取壹個小於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為間隔再搞壹次(實際上這壹步就是從左到右兩兩比較,調整位置),就得到了想要的結果。

這就是希爾排序,其要義就是先進行宏觀調整,再進行微觀調整。

  • 上一篇:如何在MFC中使用OnPaint在移動時保持窗口內容不變?
  • 下一篇:用C語言編寫在壹個字符串中找出元音字母a,e,i,o,u出現的次數。 需要區分 大小寫!! 只統計小寫元音字
  • copyright 2024編程學習大全網