排序 希爾排序

2021-09-24 09:25:18 字數 686 閱讀 7110

希爾排序

希爾排序法又稱縮小增量法。先將整個待排序列分割成若干子串行分別進行插入排序,直到整個序列中的資料接近於有序,再將整個序列進行一次排序。

間距為gap的排序

1.輔助排序,接近於有序

2.插入排序

先選定乙個整數gap,把待排序檔案中所有資料分成幾個組,所有距離為gap的資料分在同一組內,並對每一組內的資料進行排序。然後,重複上述分組和排序的工作。當到達gap=1時,所有資料在統一組內排好序。

具體**:

void shellsort(int* a, int n)

else

}a[end + gap] = tmp;

} }}

特性總結:

希爾排序是對直接插入排序的優化。

當gap > 1時都是預排序,目的是讓陣列更接近於有序。當gap == 1時,陣列已經接近有序的了,這樣就會很快。這樣整體而言,可以達到優化的效果。我們實現後可以進行效能測試的對比。

希爾排序的時間複雜度不好計算,需要進行推導,推導出來平均時間複雜度: o(n^1.3 - n^2)

穩定性:不穩定

排序 希爾排序

希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...

排序 希爾排序

縮小增量排序 待排序列按關鍵字基本有序時,直接插入排序的效率很高 希爾排序思想 將整個待排記錄分割為若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全體記錄進行一次直接插入排序,就可以完成整個排序工作 增量序列中的值沒有除1以外的公因子,且最後乙個增量必須等於1 子串行的構成不是逐...

排序 希爾排序

希爾排序是插入排序中的乙個分支,但是較簡單插入排序又有較大的改進,這使得它成為了歷史上第一批突破二次時間屏障的排序演算法之一哦。它是通過比較一定間隔的元素來工作的。因此希爾排序又稱為縮小增量排序。直接插入排序對於原始資料基本有序的情況下,效率較高。在此的基礎上。我們可以想辦法,使資料基本有序,然後利...