希爾的定義:希爾排序是插入演算法的一種,也叫縮小增量排序。是直接插入排序演算法的一種改良版。
希爾演算法是把資料序列按下標的一定增量分組,對每組使用直接插入排序演算法進行排序;然後依次縮減增量再進行排序,待整個序列中的元素基本(注:沒有全部完成排序)有序時,再對全體元素進行一次直接插入排序。
基本思想:先取乙個小於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,即...