希爾的分組究竟是如何排序的?

發布 娛樂 2024-06-28
10個回答
  1. 匿名使用者2024-01-30

    根據你的圖,第一次將每6個數字分成幾組,每個直線的數字至少包含在乙個組中,然後按照規則從大到小(從小到大)對每組進行排序。 第二次每 3 個數字分組,並且每個正數至少包含在乙個組中,並且每個組也進行排序。 最後,對每兩個數字進行分組,並且每個直子的每個數字至少包含在乙個組中,然後對每個組進行排序。

    結果是有序的結果。

  2. 匿名使用者2024-01-29

    根據上圖,排序檔案中有10條記錄,關鍵字為27 38 65 97 76 13 27 * 49 55 4增量級數的值如下:

    5,2,1。在第一次排序中,d1=5,整個檔案分為5組:(27,13),(38,27*),65,49),(97,55),(76,4)每組中的第一條記錄本身就是乙個有序區域,我們將把每組的第二條記錄翻到最後一條。

    第一次行程的結果:13 27* 49 55 4 27 38 65 97 76 在第二次行程中,d2=2,如上圖所示。 第二次排序結果:

    4 27* 13 27 38 55 49 65 97 76 在最後一次排序中,d3=1 表示直接插入並排序整個檔案,結果為有序檔案。 結果如上,如果你不明白,你可以問我......

  3. 匿名使用者2024-01-28

    Hill sort 也稱為縮小增量排序,它也屬於 Insertion Sort 類演算法。 互相傳授一般插入演算法對折並插入演算法2 路插入演算法以及表格插入演算法,希爾排序在時間效率方面更好。

    對於普通混棗通道的插入演算法,時間複雜度為 ,序列排序時可以達到最佳時間複雜度。 而且,當它很小時,插入分選效率也相對較高,因為移動的元滲透元件拆卸較少。

    因此,我們可以採用分割槽先把整個待排序序列分成若干個子序列分別插入排序,等整個序列基本排序好,即整個序列自下而上排序時,再插入整個序列進行排序。

    注意:這裡的子序列不是簡單地逐個分割,而是會用乙個子序列分隔增量這樣在插入和排序子序列時,元素不是一步一步地移動,而是突飛猛進地移動。

    其中陣列 d 是增量序列。 常用的增量序列有:

    Hill 排序是不穩定,原位。不穩定的原因是,當希爾階的不同段互換時,相等元素的初始相對位置被打亂。

  4. 匿名使用者2024-01-27

    記錄按步長間隙分組,每組記錄按直接插入排序。 隨著步長逐鏈減小,該組包含的記錄越來越多,當步長值減小到1時,將整個資料組合成乙個組,形成有序的記錄集,排序完成。 讓我們通過圖表仔細看看這個過程。

    山丘布置。 丘式排序又稱遞減增量排序演算法,是在直接插入排序演算法的基礎上改進的,其效率肯定高於直接插入簡化排序演算法; Hill 排序是一種不穩定的排序演算法。 希爾排序是由唐納德·殼牌發明並於 1959 年出版的,因此得名希爾排序。

    希爾的演算法。

  5. 匿名使用者2024-01-26

    Hill排序的詳細過程:先取乙個正整數d1陣列元素放在乙個組中,直接將排序插入到組中; 然後取 d2 三次旅行的結果。

    山排序(shell'S sort)是一種插入排序,又稱“減少增量排序”,是直接插入排序演算法的一種更高效、更改進的版本。希爾排序是一種不穩定的排序演算法。 該方法之所以得名,是因為它是在 1959 年提出的。

    Hill排序是將記錄按目標分組成一定的增量,並使用直接插入排序演算法對每組進行排序; 隨著包含越來越少的增量逐漸減小,每個組包含的關鍵字越來越多,當增量減小到 1 時,整個檔案被分成一組,演算法終止。 Hill 分揀以其設計者 Hill 的名字命名,該演算法在 1959 年由老 Busil 發表的“高速分揀程式”中進行了描述。

    希爾排序的利弊

    從本質上講,Hill 排序演算法是對直接插入排序演算法的改進,它減少了它製作的副本數量,並且速度更快。 原因是當n值較大時,每次排序中需要移動的資料項數量非常少,但資料項的距離卻很長。 當 n 值減小時,每次需要移動更多的資料,排序後接近最終位置。

    正是這兩種情況的結合,使得 Hill 排序比插入排序更有效。 shell 演算法的效能與所選的組長度序列有很大關係。 只有對要排序的特定記錄序列,才能準確估計關鍵字比較的數量和物件移動的數量。

  6. 匿名使用者2024-01-25

    希爾排序時間複雜度為 o(n (,空間複雜度為常階巧妙消去 o(1)。 Hill 排序不如時間複雜度為 o(n(logn)) 的快速排序演算法快,因此在中等規模尺度上表現良好,但它對於對非常大的資料進行排序並不是最佳選擇,並且比具有一般 o(n2) 複雜度的演算法快得多。 Shell 排序是一種插入排序,是對直接插入排序演算法的改進。

    概念及其介紹:Hill 排序,也稱為縮小規模的增量排序,在 1959 年提出時得名。 它通過比較彼此之間一定距離的元素來實現這一點,並且每次比較使用的距離會隨著演算法的進行而減小,直到只比較相鄰元素的最後乙個順序。

    Hill排序是將記錄按目標分組成一定的增量,並使用直接插入排序演算法對每組進行排序; 隨著增量孝道知識逐漸減少,每組包含的關鍵詞越來越多,當增量減少到1時,整個檔案被分成一組,演算法終止。

  7. 匿名使用者2024-01-24

    Hill排序演算法思路:Hill排序按下標增量進行分組,每組按插入排序演算法排序,隨著增量的減小,每組包含的關鍵字越來越多,當增量減小到1時,整個序列被分成一組,演算法終止。

    我們以增量階次排序為例,Hill排序的基本步驟:選擇初始增量gap=length 2,縮小增量,繼續按照gap=gap 2的方式進行,直到增量gap=1,增量的每次變化都會將原序列分成幾組,每組分別插入排序。

    每次按增量分割組對插入進行排序時,小數移到前面,大數移到後面,最後插入增量間隙=1排序,即為最終有序序列。

    由於多重插入排序,我們知道單個插入排序是穩定的,不會改變相同元素的相對順序,但是在不同的插入排序過程中,相同的元素可能會在各自的插入排序中移動,最終它們的穩定性會被破壞,因此外殼排序是不穩定的。

    歷史

    Hill Volge Sorting 以其設計者 Donald Shell 的名字命名,該演算法在 Hill 1959 年出版的《A High-Speed Sorting Procedure》一書中進行了描述。

    1961 年,IBM 的女程式設計師 Marlene Metzner Norton 首次使用 Fortran 語言實現了 Hill 排序演算法。 程式中採用一種簡單有效的方法來設定Hill排序所需的增量序列:第乙個擴充套件器是待排序記錄數的一半,然後逐個減半,最後乙個增量為1。

    該演算法後來被稱為shell-Metzner演算法,Metzner本人在2003年的一封電子郵件中說:“我沒有為這個演算法做任何事情,我的名字不應該出現在演算法的名稱中。 ”

  8. 匿名使用者2024-01-23

    山丘排序時間複雜度是 o(n (,空間複雜度為常數階 o(1)。 希爾排序沒有時間複雜度為 o(n(logn)) 的快速排序模霍爾方法。

    速度快,因此在中等規模上表現良好,但對非常大的資料進行排序並不是最佳的,並且通常比具有一般 o(n2) 複雜度的演算法快得多。 Shell 排序

    是一種插入排序,是對直接插入排序演算法的改進。

    概念及其粗略性質的介紹:Hill Paidan,也稱為 Reduced Incremental Order,因其於 1959 年推出而得名。 它通過以一定的間隔比較元素來實現這一點,並且用於每次比較的距離會隨著演算法的進行而減小,直到只比較相鄰元素的最後乙個順序。

    Hill排序是將記錄按目標分組成一定的增量,並使用直接插入排序演算法對每組進行排序; 隨著增量的減小,每個組包含的關鍵字越來越多,當增量減小到 1 時,整個檔案被分組並終止演算法。

  9. 匿名使用者2024-01-22

    Hill 排序的基本思想是以小於 n 的整數 d1 作為第乙個增量,並將檔案的所有記錄劃分為 d1 組。 具有 d1 倍數的獨佔距離的記錄被放置在同一組中。

    首先,在每組內進行直接插入分揀; 然後,以第二個增量 d2 為例:

    對於這樣的無序陣列 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 次再做一次(其實這一步就是從左到右比較,調整位置),就得到了想要的結果。

    這就是希爾排序,其本質是先做巨集觀調整,再做微觀調整。

  10. 匿名使用者2024-01-21

    基本思想。

    取乙個小於 n 的整數 d1 作為第乙個增量,將檔案的所有記錄分成組。 距離為 d1 的倍數的所有記錄都放在同一組中。 首先,在每組內進行直接插入分揀; 然後,取第二個增量 d20&&r[0]。

    key0)#endif

    if 0 演算法 2

    int j;

    for(j = i - k;j>=0 &&t < a[j];j -= k)

    a[j + k] = a[j];

    a[j + k] = t;

    #endif

    如果 0 演算法 3

    int j;

    for(j = i;j >= k &&t < a[j - k];j -= k)

    a[j] = a[j - k];

    a[j] = t;

    #endif

    演算法 4int j = i;

    while(j >= k &&t < a[j - k])

    a[j] = t;

    k /= 2;}}

    int main()

    shellsort(a,sizeof(a)/sizeof(a[0]))

    for(int k = 0;k < n;k++)

    printf("a[%d] = %d",k,a[k]);

    return 0;

    c++void shellsort(int a, int n)

    a[j + d] = temp;}}

相關回答
8個回答2024-06-28

支付寶提現免費方式:

芝麻信用本質上是一種信用評分模型,國際公認的FICO評分模型主要關注五類因素:信用還款歷史、信用賬戶數量、信用年限、在用信用型別、新開信用賬戶,以及信用卡額度、房地產情況、違約記錄、 等。 >>>More

33個回答2024-06-28

其實,真正相愛到為對方而死還是很少見的,但至少可以為對方做很多事情,哪怕不容易完成。

12個回答2024-06-28

天地黃,宇宙荒涼(如天一、天二、地一、地二)。 >>>More

13個回答2024-06-28

我同意一樓的說法,如果你的月經週期規律,你的排卵日應該在8月10日左右(排卵期在下一次月經前14天),而第二次月經剛剛結束,3號左右,不會進入排卵期,所以你的孩子應該是你丈夫的。 >>>More

24個回答2024-06-28

鼻炎的症狀有很多種,根據鼻炎的型別不同,鼻炎的症狀也不同,鼻炎的症狀主要包括鼻塞、流鼻涕、打噴嚏、頭痛、頭暈等,但只有這些鼻炎症狀並不能診斷出鼻炎,還要依靠耳鼻喉科醫生進行詳細的檢查,鼻炎有各種型別的鼻炎在耳鼻喉科的專題中, 但僅供參考,因為你覺得是鼻炎,其實可能是鼻息肉、鼻中隔曲率、鼻竇炎甚至惡性腫瘤。如果您懷疑自己患有鼻炎,您可能需要先去看耳鼻喉科醫生。 >>>More