八大排序演算法 希爾排序

2021-08-09 09:28:06 字數 574 閱讀 4324

希爾的定義:希爾排序是插入演算法的一種,也叫縮小增量排序。是直接插入排序演算法的一種改良版。

希爾演算法是把資料序列按下標的一定增量分組,對每組使用直接插入排序演算法進行排序;然後依次縮減增量再進行排序,待整個序列中的元素基本(注:沒有全部完成排序)有序時,再對全體元素進行一次直接插入排序。

基本思想:先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分組。所以距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後取第二個增量d2

增量=1(

<

…時間複雜度為:最大o(n^2),最小o(n*log2n)。

例項:

int arr = ;

int k = sizeof(arr) / sizeof(arr[0]);

//根據當前增量進行插入排序

void shellinsert(int array, int n, int dk)

}//希爾排序

void shellsort(int array, int n, int t)

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

}

八大排序 希爾排序

希爾排序 shell sort 是插入排序的一種。是直接插入排序的改進版,它是非穩定排序演算法。其得名於它的提出者d.l.shell,shell sort等演算法的提出打破了 排序演算法不可能突破o n 2 的魔咒,它將排序演算法的時間複雜度提成到了o nlogn 不可能超越的o n 2 徹底成為了...

八大排序 希爾排序

希爾排序 shell s sort 是插入排序的一種 又稱為 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是不穩定的排序演算法。希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序 隨著增量的逐漸減少,每組...

八大排序演算法之希爾排序

描述 設計思想 把記錄按步長 分組,對每組記錄採用直接插入排序方法進行排序。隨著步長逐漸減小,所分成的組包含的記錄越來越多,當步長的值減小到1時,整個資料合成為一組,構成一組有序記錄,則完成排序。圖示 分析 初始時,有乙個大小為 10 的無序序列。在第一趟排序中,我們不妨設 gap1 n 2 5,即...