希爾排序 shell

2022-07-08 20:48:13 字數 349 閱讀 9874

希爾排序又叫縮小增量排序,是建立在插入排序上的威力加強版。

主要是利用了插入排序對逆序數越少的陣列的排序,花費的時間就越少,的特性來進行優化;

↑簡單來說就是越整齊排序所花時間也就越少;

希爾排序中通過比較相距一定間隔的元素,並使這個間隔不斷減小,知道間隔為1,進行工作;

這也是縮小增量排序名稱的由來;

實現一般使用for迴圈巢狀,然後依次比較n和n+k的元素,其中k是間隔;

間隔k的初始值一般使用n/2,n為陣列元素個數;

看似使用了幾個for巢狀,實際上花費的時間卻很少,希爾排序最壞的情況使用o(n3/2);

希爾(Shell)排序

希爾 shell 排序 2 平方級時間複雜度,但當然也沒有線性排序演算法的o n 級的線性時間複雜度,對於大型資料輸入,線性演算法肯定是最佳的選擇,但對於中規模資料而言,希爾排序無疑是最佳的選擇。演算法大師knuth在他的著作 計算機程式設計藝術 給出的希爾排序的平均時間複雜度為o n 1.3 介於...

希爾shell排序

include include include typedef int type define n 100000 void exchange type a,int a,int b void selectionsort type a,int n void insertionsort type a,in...

希爾排序 Shell

希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序。該方法的基本思想是 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序 增量足夠小 時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基...