資料結構----希爾排序(最小增量排序)
阿新 • • 發佈:2019-01-02
1.基本思想:演算法現將要排序的一組數按某個增量d(n/2,n為要排序數的個數) 分成若干組,每組中記錄的下標相差d。對每組中全部元素進行直接插入排序,然後再用一個較小的增量(d/2)對它進行分組,在每組中在進行直接插入排序。當增量減到1時,進行直接插入排序,排序完成。
2.例項:
3.程式碼實現:
public static void shellSort(int[] a){
for(int i=a.length/2;i>0;i/=2){
int k=0;
for(int j=i;j<a.length;j++){
int temp=a[j];
for(k=j;k>=i&&temp<a[k-i];k-=i){
a[k]=a[k-i];
}
a[k]=temp;
}
}
}
4.時間複雜度:希爾排序的執行時間依賴於增量排序的選擇:
- 使用希爾增量時希爾排序的最壞情況執行時間為O(N^2)。
- 使用Hibbard增量的希爾排序的最壞情況執行時間為O(N^2/3)。