常見排序演算法 希爾(shell)排序

2021-08-20 05:25:55 字數 798 閱讀 5080

原理:一般,講序列分成n/2組,然後進行排序,後再分為(n/2)/2組,再進行排序,以此類推。

例子:63 92 27 36 45  71  58 7

分組1次:63

9227 36 45

7158 7   --》排序:45

7127 7 63

9258 36

分組2次:45 71 27 7 63  92  58 36  --》排序:27  

7 45

3658

7163  

92最後排序:7 27 36 45 58 63 71 92

程式實現

#includeusing namespace std;

void shellsort(int array, int len)

array[j + jmp] = tmp;

} cout << "第" << k++ << "次排序: ";

for (int m = 0; m < len; ++m)

cout << array[m]<

cout << endl;

jmp = jmp / 2; }}

void main()

; int len = sizeof(a) / sizeof(a[0]);

shellsort(a, len);

system("pause");

}

執行結果

排序演算法之Shell排序(希爾排序)

shell排序 思想 先可進行分組,再利用插入排序。分組的方法是根據步長的設定從a 0 開始,並且不大於步長,組內相鄰兩個元素的邏輯距離是gap。分組結束的標誌是gap為0,也就是已經全部按照大小排列。推薦閱讀 給定陣列shell排序,從小到大排列。include int main gap 10 2...

常見排序演算法之希爾排序

希爾排序是基於插入排序的一種改進。以下摘自文字摘自 寫的確實很好 第一塊希爾排序介紹 準備待排陣列 6 2 4 1 5 9 首先需要選取關鍵字,例如關鍵是3和1 第一步分成三組,第二步分成一組 那麼待排陣列分成了以下三個虛擬組 6 1 一組 2 5 二組 4 9 三組 看仔細啊,不是臨近的兩個數字分...

常見排序演算法之希爾排序演算法

1.希爾排序簡介 1.介紹 希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法 2.核心思想 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序 當增量減至1時,整個檔案恰被分成一組,演算...