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