希爾排序 Shell

2021-09-08 04:05:07 字數 697 閱讀 7312

希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序。

該方法的基本思想是:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比前兩種方法有較大提高。

就是直接插入排序的公升級版,可以和直接插入排序進行對比,就比較容易理解。

1.固定增量r,每次除2

/*

* shell排序

* 希爾排序 直接插入排序的公升級版*/

static void shellsort(int a),這個陣列自定義,數量視實際情況而定。

static void shellinsert(int a,int dk)}}

static void shellsort(int a,int dlta,int t)

public static void main(string args);

int dlta= new int;

//shellsort(array);

shellsort(array,dlta,3);

for(int i=0;isystem.out.print(array[i]+" ");

}

希爾(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

希爾排序 shell 1.將n個元素array 分成n 2個數字序列,第乙個資料和第n 2 1 個資料為一對,併排好順序 2.分成n 4個序列,再次排序 3.直到序列為一為止 include include include define size 10 void shellsort int a,in...