附有本人超級詳細解釋(看不懂的面壁十天?。?
一、 實際問題:
希爾排序(Shell Sort)是插入排序的一種。因D.L.Shell于1959年提出而得名。它又稱“縮小增量分類法”,在時間效率上比插入、比較、冒泡等排序算法有了較大改進。能對無序序列按一定規律進行排序。
二、數學模型:
先取一個小于n的整數d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插人排序;然后,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。該方法實質上是一種分組插入方法。
三、算法設計:
1、將相隔某個增量dlta[k]的元素構成一個子序列。在排序過程中,逐次減小這個增量,最后當h減到1時,進行一次插入排序,排序就完成。增量序列一般采用:dlta[k]=2t-k+1-1,其中t為排序趟數,1≤k≤t≤[log2 (n+1)],其中n為待排序序列的長度。按增量序列dlta[0..t-1]。
2、按增量dlta[k](1≤k≤t≤[log2 (n+1)])進行一趟希爾插入排序。
3、在主函數中控制程序執行流程。
4、時間復雜度:1≤k≤t≤[log2 (n+1)]時為O(n3/2)。
標簽:
Shell
1959
Sort
排序
上傳時間:
2013-12-11
上傳用戶:天涯