1. 程式人生 > >資料結構----希爾排序(最小增量排序)

資料結構----希爾排序(最小增量排序)

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.時間複雜度:希爾排序的執行時間依賴於增量排序的選擇:

  1. 使用希爾增量時希爾排序的最壞情況執行時間為O(N^2)。
  2. 使用Hibbard增量的希爾排序的最壞情況執行時間為O(N^2/3)。