當前位置:首頁 » 操作系統 » shell排序演算法

shell排序演算法

發布時間: 2022-09-04 05:20:54

Ⅰ 希爾排序演算法

希爾排序(Shell Sort)是插入排序的一種。因D.L.Shell於1959年提出而得名。

希爾排序基本思想

基本思想:

先取一個小於n的整數d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。

詳細資料:http://bk..com/view/178698.htm

Ⅱ 排序演算法有哪些

1.插入排序—直接插入排序(Straight
Insertion
Sort)
2.
插入排序—希爾排序(Shell`s
Sort)
3.
選擇排序—簡單選擇排序(Simple
Selection
Sort)
4.
選擇排序—堆排序(Heap
Sort)
5.
交換排序—冒泡排序(Bubble
Sort)
6.
交換排序—快速排序(Quick
Sort)
7.
歸並排序(Merge
Sort)
8.
桶排序/基數排序(Radix
Sort)

Ⅲ 希爾排序的詳解

希爾排序基本思想:先取一個小於n的整數d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。

舉例說明:

對於這樣一個無序的數組5932611817410,想把它變成順序遞增的數組1234567891011。先隔3個元素取一次:把5284取了出來,往後搓一位,把96110取出來,再往後搓一位,又把3117取出來。分別對這三個小組排序成為遞增的序列,再插回去,如圖:

於是得到了第一趟排序的結果:2134675911810.現在再以2為間隔重復以上步驟(這次得到的是兩個小組)得到了2134576811910。最後再以1為間隔再搞一次(實際上這一步就是從左到右兩兩比較,調整位置),就得到了想要的結果。

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

Ⅳ 請問shell排序用的地方多麼

希爾排序
基本思想:將整個無序序列分割成若干小的子序列分別進行插入排序或冒泡排序。
序列分割方法:將相隔某個增量h的元素構成一個子序列。在排序過程中,逐次減小這個增量,最後當h減到1時,進行一次插入排序或冒泡排序,排序就完成。增量序列一般採用:d1=n div 2 ,di=di-1 div 2 ;i=2,3,4.....其中n為待排序序列的長度。

你說數據結構,那大概就是信息學一類的吧。
那麼可以很明確的告訴你,希爾排序用的並不多,甚至可以說是幾乎不用。因為它的效率比快排低一些(主要是這個增量不好選擇),並且不是穩定的,盡管它由於直接選擇或插入排序,但是與更高級的排序演算法(比方說堆排)還是有一定差距的。

Ⅳ shell排序法是怎麼實現

希爾Shell排序是一種插入排序演算法,它出自D.L.Shell,因此而得名。Shell排序又稱作縮小增量排序。

先取一個小於n的整數d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<;…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。

該方法實質上是一種分組插入方法。

演算法分析

增量序列的選擇

Shell排序的執行時間依賴於增量序列。

好的增量序列的共同特徵:

① 最後一個增量必須為1;

② 應該盡量避免序列中的值(尤其是相鄰的值)互為倍數的情況。

有人通過大量的實驗,給出了目前較好的結果:當n較大時,比較和移動的次數約在n到1.6n之間。

Shell排序的時間性能優於直接插入排序

希爾排序的時間性能優於直接插入排序的原因:

①當文件初態基本有序時直接插入排序所需的比較和移動次數均較少。

②當n值較小時,n和n^2的差別也較小,即直接插入排序的最好時間復雜度O(n)和最壞時間復雜度0(n^2)差別不大。

③在希爾排序開始時增量較大,分組較多,每組的記錄數目少,故各組內直接插入較快,後來增量di逐漸縮小,分組數逐漸減少,而各組的記錄數目逐漸增多,但由於已經按di-1作為距離排過序,使文件較接近於有序狀態,所以新的一趟排序過程也較快。

因此,希爾排序在效率上較直接插人排序有較大的改進。

穩定性

希爾排序是不穩定的。參見上述實例,該例中兩個相同關鍵字49在排序前後的相對次序發生了變化。

演算法討論

Shell排序演算法的時間復雜度分析比較復雜,實際所需的時間取決於各次排序時增量的個數和增量的取值。研究證明,若增量的取值比較合理,Shell排序演算法的時間復雜度約為O(n(ldn)2)。由於Shell排序演算法是按增量分組進行的排序,所以Shell排序演算法是一種不穩定的排序演算法。

演算法步驟

Step1 將n個元素個數列分為5個小組,在每個小組內按直接插入法排序;

step2 在第i步,分組個數取 di+1 =(di +1)/2 {9,5,3,2,1};相臨兩組之間的對應元素進行比較,如果ai>aj,則交換它們的位置;

Step3 當dK = 1的循環過程完成後,排序過程結束。

(詳細請查看網路相關條目。)

Ⅵ Shell排序的演算法步驟

Step1 將n個元素個數列分為5個小組,在每個小組內按直接插入法排序;
step2 在第i步,分組個數取 di+1 =(di +1)/2 {9,5,3,2,1};相臨兩組之間的對應元素進行比較,如果ai>aj,則交換它們的位置;
Step3 當dK = 1的循環過程完成後,排序過程結束。
希爾排序舉例:設有字元數列f d a c b e,執行Shell排序:

Ⅶ shell排序題

希爾Shell排序是一種插入排序演算法,它出自D.L.Shell,因此而得名。Shell排序又稱作縮小增量排序。先取一個小於n的整數d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2aj,則交換它們的位置; Step3 當dK = 1的循環過程完成後,排序過程結束。(詳細請查看網路相關條目。)

Ⅷ C語言shell排序演算法,這是我根據演算法敲出來的,可是排序結果總是不對,麻煩哪位大師指點指點

你在交換的時候第二條語句是不是錯了?
a[j]=a[i+gap];
改為:
a[j]=a[j+gap];

Ⅸ shell模型的五大要點

有四大要點,硬體、軟體、環境、人。

1、H,硬體,諸如設備、設施、工具、計算機。

2、S,軟體,運行規則、硬體驅動軟體、指令、法令、程序、文件。

3、E,環境,運作環境、工作場所、自然環境。

4、L,人,人的績效、能力、局限。

相關拓展

在計算機科學中,Shell俗稱殼(用來區別於核),是指「為使用者提供操作界面」的軟體(command interpreter,命令解析器)。它類似於DOS下的COMMAND.COM和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。

同時它又是一種程序設計語言。作為命令語言,它互動式解釋和執行用戶輸入的命令或者自動地解釋和執行預先設定好的一連串的命令;作為程序設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。

在排序演算法中,Shell是希爾排序的名稱。

以上內容參考網路-shell

Ⅹ 希爾排序法,最壞情況需要幾次比較

希爾排序法,最壞情況下需要比較O(n^1.5)次

堆排序法,最壞情況需要O(nlog(2)(n))次

快速排序法,最壞情況需n(n-1)/2次

將整個無序序列分割成若干小的子序列分別進行插入排序。

序列分割方法:將相隔某個增量h的元素構成一個子序列。在排序過程中,逐次減小這個增量,最後當h減到1時,進行一次插入排序,排序就完成。增量序列一般採用:ht=2t-1,1≤t≤[log2n],其中n為待排序序列的長度。

(10)shell排序演算法擴展閱讀:

在直接插入排序演算法中,每次插入一個數,使有序序列只增加1個節點,並且對插入下一個數沒有提供任何幫助。如果比較相隔較遠距離(稱為增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。

D.L.shell於1959年在以他名字命名的排序演算法中實現了這一思想。演算法先將要排序的一組數按某個增量d分成若干組,每組中記錄的下標相差d,對每組中全部元素進行排序,然後再用一個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成一組,排序完成。

熱點內容
落葉片拍攝腳本 發布:2025-05-14 20:40:49 瀏覽:797
安卓為什麼不能用cmwap 發布:2025-05-14 20:40:43 瀏覽:656
jquery獲取上傳文件 發布:2025-05-14 20:27:57 瀏覽:43
雲web伺服器搭建 發布:2025-05-14 20:25:36 瀏覽:525
汽修汽配源碼 發布:2025-05-14 20:08:53 瀏覽:742
蜜蜂編程官網 發布:2025-05-14 19:59:28 瀏覽:57
優酷怎麼給視頻加密 發布:2025-05-14 19:31:34 瀏覽:635
夢三國2副本腳本 發布:2025-05-14 19:29:58 瀏覽:860
phpxmlhttp 發布:2025-05-14 19:29:58 瀏覽:434
Pua腳本 發布:2025-05-14 19:24:56 瀏覽:449