1. 程式人生 > 其它 >[演算法導論]-希爾排序

[演算法導論]-希爾排序

希爾排序 (Shell sort):   1.特點: 是插入排序的優化,時間複雜度為 O( n ^ (1.3-2 ) ),空間複雜度為O(1),希爾排序沒有時間複雜度為 O(n(logn)) 的快速排序演算法快 ,因此對中等大小規模表現良好,但對規模非常大的資料排序不是最優選擇,總之比一般 O(n^2 ) 複雜度的演算法快得多。
  2.核心思想:交換不相鄰的元素對陣列的區域性進行排序,並最終用插入排序將區域性有序的陣列排序;   3. c語言程式碼:
 1 void sheel_sort(int  arry[], int size){
 2 
 3     if(!arry || size<2){
 4         return;
 5     }
 6 
 7     int j=0;
 8     for(int gap=size/2 ; gap > 0 ; gap/=2 ){
 9         for(int i=gap ; i<size ; i++){
10             int
tmp=arry[i]; 11 for(j=i;j>=gap && tmp < arry[j-gap] ; j-=gap ){ 12 arry[j]=arry[j-gap]; 13 } 14 arry[j]=tmp; 15 } 16 } 17 }