999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

希爾排序算法設計思想研究

2016-09-22 01:13:46馬鞍山市委黨校安徽馬鞍山2430112馬鞍山電視大學安徽馬鞍山243011
銅陵學院學報 2016年2期
關鍵詞:排序

謝 婷(1.馬鞍山市委黨校,安徽 馬鞍山243011;2馬鞍山電視大學,安徽 馬鞍山243011)

希爾排序算法設計思想研究

謝婷1,2
(1.馬鞍山市委黨校,安徽 馬鞍山243011;2馬鞍山電視大學,安徽 馬鞍山243011)

根據對希爾排序算法原理的研究分析,指出希爾算法的執行時間是受文件大小、掃描次數等因素影響,其中影響最大的是增量序列的選取,通過實驗證明,增量序列為N/3+1,N/9+1,N/27+1…,1時,程序排序效率比使用序列N/2,N/4,N/8,…,1要高。

希爾排序;算法;增量序列;時間復雜度

隨著計算機信息技術的普及,算法也已成為計算機學科的重要研究對象。算法這一詞匯是由數學家al-Khwarizmi的名字音譯過來的,直到1936年圖靈機這一現代計算機的基本模型出現后,算法的概念才算明確起來:算法就是按部就班地解決一個問題或完成一個目標的過程[1]。排序在算法中占有很重要的地位,排序算法在數據處理領域中是一種最常用的非數值算法,在計算機信息處理、數據庫操作、數據分析等方面起著重要的作用。希爾排序算法是Donald.L. Shell于1959年提出的一種插入排序算法。希爾算法所占用的內存少,排序速度快,這就使得這種排序算法在記錄較多時更具有使用價值。

一、希爾排序算法原理

希爾排序算法[2]:首先存在排列記錄R1,R2,…RN;在完成排序以后,它們的關鍵碼是有序的:K1<= K2<=…<=KN。用一個輔助的增量序列ht,ht-1,…,h0來控制這個排序的過程,其中h0=1,t為程序的掃描次數`;適當選擇增量可以顯著地減少排序時間,當t=1時,這個算法退化為直接插入排序法。

步驟1:[設置s循環]對s=t,t-1,…,0實施步驟2;然后結束這個算法。

步驟2:[設置j循環]設置h←hs,并對h<j<=N實施步驟3到步驟6(使用直接插入法來對隔開h個位置的記錄進行排序,使得1<=i<=N-h,Ki<=Ki+h)。

步驟3:[設置i,K,R]置i←j-h,K←Kj,R←Rj。

步驟4:[比較K:Ki]若K>=Ki,則轉到步驟6。

步驟5:[移動Ri,i減值]置Ri+h←Ri,然后i←ih。若i>0,則轉回到步驟4。

步驟6:[R進入Ri+h]置Ri+h←R。

二、希爾排序算法實現

希爾排序也叫做“減少增量的排序”,因為每次掃描都是通過一個增量h來確定,使得我們對相距h個單位的記錄進行排序。希爾排序算法的實現如表1所示,最初有16個記錄進行排序,設其增量序列的取值為8,4,2,1。首先設置增量h=8,將這16個記錄分成8組,兩兩一組即(R1,R9),(R2,R10),…,(R8,R16)。分別對每組記錄進行排序,使得我們進到表的第3行,這一操作稱為“第一次掃描”。注意記錄R11150已經同記錄R3511交換了位置;記錄R5918和記錄R7886這兩條記錄都跳到右邊去了?,F在減小增量設置h= 4,把得到的記錄重新分成4個組,每4個一組,即(R1,R5,R9,R13),…,(R4,R8,R12,R16),并再次分別對每組進行排序,這是“第二次掃描”,使得我們進入到表的第4行。第三次掃描再次減小增量設h=2,將得到的記錄分為2組,對各有8個記錄的兩個組進行排序,然后進行第四次掃描,通過對所有的16個記錄進行排序來完成整個過程。

希爾算法的代碼如下:

表1 增量為8,4,2,1的Shell排序

三、希爾算法的分析

希爾算法在初排序時,增量h取值較大,即間隔較大,子序列較多,每個序列中的記錄數目較少,所以子序列中用直接插入排序較快,隨著增量h減小即間隔變小,子序列中記錄數目增多,但由于已按上一個間隔排過序,記錄接近有序狀態,所以新的一趟排序過程也較快,在做最后一趟時,所有的排序碼幾乎有序了,大大提高了排序速度。

希爾算法的執行時間與5個因素有關:文件大小即排序的記錄數N,掃描次數即增量的個數t,增量序列ht,ht-1,…,h0,比較次數A,移動次數B。其中關鍵字的比較次數在這里又是重要因素,而關鍵字的比較次數又受著增量序列的影響,所以希爾算法研究的核心就是增量序列ht,ht-1,…,h0如何選取,才能使得希爾算法執行時間最短。

定理[2]:如果增量序列ht,ht-1,…,h0,滿足條件:hs+1modhs=0,對于t-1>s>=0,當排序記錄個數N很大時,希爾算法的運行時間不能比O(N1。5)更小。定理中整除性條件意味著,在每種(hs+1/hs)有序排列都是同等可能意義的。然而實踐證明,當N很大并且增量序列取值不滿足這個整除性條件時,算法的執行時間會更短,時間效率會更高。例如當增量序列選取…8,4,2,1時,在奇數和偶數位置上鍵值不相關時,希爾排序最后增量h為1時記錄移動次數O(N3/2),而當增量序列選取為…7,5,3,1時,最后增量h為1時記錄移動次數最多為2N次,排序時間得到明顯改善。所以我們有理由認為增量序列選取奇數序列比選取偶數序列要好,但并不一定是最好。理論上說,如果一個k有序的文件被h排序,則它保持為k有序。這一理論表明選取互素增量進行排序是可行的。

文中選取如下幾種方式進行驗證:⑴常用增量序列:N/2,N/4,N/8,…,1,易于簡單程序實現。⑵Hibbard序列[3]:2k-1,這樣得到的序列增量類似于奇數序列。 ⑶增量序列:N/3+1,N/9+1,N/27+1,…,1,這樣得到的序列不滿足整除條件。

四、實踐驗證

選取三組增量序列:

⑴ht1=N/2,N/4,N/8,…,1

⑵ht2=2k-1,…15,7,3,1

⑶ht3=N/3+1,N/9+1,N/27+1,…,1

代入希爾排序程序[4],用隨機生成函數隨機產生三組大數量的無符號整數作為待排序記錄的關鍵字,分別用上述三種增量序列對各組待排序序列進行排序,記錄每個排序過程的比較次數、移動次數以及執行時間。

1.保持文件大小即排序的記錄數N不變

當N=100000,用隨機函數生成三組隨機數,分別代入上述三種增量序列對其進行希爾排序實驗。記錄實驗過程中的比較次數、移動次數和執行時間。測試結果記錄在表2:

表2 N值固定時三組隨機數據在不同增量序列下的測試結果

2.待排序列的記錄個數增加

記錄元素個數N的值從小到大變化(N=10000,100000,1000000,10000000)時,分別取三種增量序列代入同樣的希爾排序程序進行實驗,得到結果如表3:

表3 不同元素個數三種增量序列測試結果

根據表2表3的測試的結果來看,可以得出如下結論:

⑴對于記錄數相同的三組隨機生成的整數序列,在三種增量序列下排序中的比較次數、移動次數以及執行時間差別并不是很大。我們可以認為對于待排序序列的記錄數相同情況下,這三種增量序列,希爾排序算法的時間復雜度沒有明顯的差異。

⑵希爾算法受增量序列影響較大,選取恰當的h序列能縮短程序的執行時間。

⑶增量序列為N/3+1,N/9+1,N/27+1…,1時相對于其它兩種排序效率最優,隨著記錄個數的增多,優化效果越明顯。同時也印證了不滿足整除條件依然可以取得最優時間復雜度。特別要指出的是,ht3并不是唯一的最佳增量序列。

⑷奇數增量序列效率比偶數的要高。

[1]黃林鵬.基于歸納的算法設計思想[J].程序員,2006(4):56-58.

[2]DONALE E.Knuth計算機程序設計藝術(第3卷)排序與查找[M].蘇運霖,譯.北京:國防工業出版社,2002:78-89.

[3]A.A.PAPERNOV G.V.Stasevich Problemy Peredachi Informatsii[M].English translation in?Problems of Information Transmission Springer Publishing House.1965:81-98.

[4]劉瑞新.Visual C++面向對象程序設計教程[M].北京:機械工業出版社,2004:79-88.

Research on the Design Idea of Shell Sorting Algorithm

Xie Ting1,2
(1.Ma'anshan Mmunicipal Party Committee Party School,Ma'anshan Anhui 243011,China;2.Ma'anshan radio and Television University,Ma'anshan Anhui 243011,China)

Based on the analysis of the research on the shell sort algorithm,the paper points out that Shell algorithm execution time is affected by the file size,number of scans and other factors,of which the influence is the largest increment series selection.Proved by experiments,the algorithm runs much better if it uses the sequence for N/3+1,N/9+1,N/27+1...,1 rather than the sequence of N/4,N/2,N/8,...,1.

Shell sort;algorithm;incremental sequence;time complexity

O223

A

1672-0547(2016)02-0111-02

2016-03-02

謝婷(1975-),女,安徽馬鞍山人,馬鞍山市委黨校(馬鞍山電視大學)講師,碩士,研究方向:計算機信息技術、網絡應用。

猜你喜歡
排序
排排序
排序不等式
作者簡介
名家名作(2021年9期)2021-10-08 01:31:36
作者簡介
名家名作(2021年4期)2021-05-12 09:40:02
作者簡介(按文章先后排序)
名家名作(2021年3期)2021-04-07 06:42:16
恐怖排序
律句填空排序題的備考策略
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
作者簡介(按文章先后排序)
名家名作(2017年2期)2017-08-30 01:34:24
主站蜘蛛池模板: 亚洲妓女综合网995久久| 色网在线视频| 日韩A级毛片一区二区三区| 亚洲午夜天堂| 日韩麻豆小视频| 国产欧美精品一区二区| 永久免费av网站可以直接看的| 51国产偷自视频区视频手机观看| 日韩黄色精品| 中文字幕 日韩 欧美| 91日本在线观看亚洲精品| 日韩福利在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 欧美在线伊人| 久久久无码人妻精品无码| 亚洲中文字幕97久久精品少妇| 色视频国产| 色135综合网| 亚洲国产黄色| 一区二区三区在线不卡免费| 制服丝袜无码每日更新| 国产成人综合网| 99热最新在线| 欧美中文字幕无线码视频| 97亚洲色综久久精品| 91在线播放免费不卡无毒| 亚洲第一极品精品无码| 午夜性爽视频男人的天堂| 在线观看免费人成视频色快速| 欧美亚洲国产日韩电影在线| 亚洲成人动漫在线| 亚洲黄网在线| 美女无遮挡免费网站| av在线人妻熟妇| 无码'专区第一页| 精品三级网站| 99激情网| 国产一级片网址| 国产精品污视频| 久久人午夜亚洲精品无码区| 色综合日本| 爆操波多野结衣| 亚洲国产91人成在线| 国产精品自在线拍国产电影| www.狠狠| 99re精彩视频| 日韩美一区二区| 四虎永久在线| 国产精品视频猛进猛出| 欧美午夜网站| 国产日韩av在线播放| 欧美视频在线第一页| 免费A∨中文乱码专区| 成人一区在线| 亚洲一级无毛片无码在线免费视频| 69精品在线观看| 91九色最新地址| 免费A级毛片无码免费视频| 91福利在线观看视频| 91欧美亚洲国产五月天| 国产成人免费| 在线精品自拍| 伊伊人成亚洲综合人网7777| 成人免费网站久久久| 午夜丁香婷婷| 狠狠色噜噜狠狠狠狠色综合久| 国产成人精品午夜视频'| 欧美精品三级在线| 干中文字幕| 无码中文字幕乱码免费2| 青青青国产精品国产精品美女| 狠狠色婷婷丁香综合久久韩国| 精品一区国产精品| 亚洲第一成年人网站| 欧美亚洲一区二区三区在线| 午夜精品福利影院| 免费观看成人久久网免费观看| 欧美翘臀一区二区三区| 婷婷亚洲最大| 欧美日韩导航| 精品一区二区三区四区五区| 国产一级特黄aa级特黄裸毛片 |