会飞的蝌蚪君

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

希尔排序详见大话数据结构p389

 

 1 //希尔排序(shellsort)
 2 
 3 //希尔排序的主要思想是:在每一次的粗排序中使得整个记录集是基本有序的。
 4 //采用的是增量跳跃分割的策略,使得在每个子序列里进行直接插入排序。
 5 //主要的成就是减少了时间复杂度,时间复杂度为O(n^(3/2))
 6 
 7 
 8 
 9 void ShellSort(sqlist* L)
10 {
11 
12     int i,j;
13     increment = L->length;
14     do
15     {
16         increment = increment/3;   //增量序列
17         for(i=increment+1;i<L->length;i++)
18         {
19             if(L->r[i]<L->r[i-increment])   //只有右边的关键字小于左边的关键字,才进行互换
20             {
21                 L->r[0]=L->r[i];
22                 for (j=i-increment;j>0 && L->r[0]<L->r[j];j-=increment)
23                 
24                     L->r[j+increment]=L->r[j];
25                     
26                 L->r[j+increment]=L->r[0];   //j-=increment => j=j+increment  插入操作
27             }
28         }
29     }
30     while(increment>1);
31 }

 

posted on 2018-04-15 11:58  会飞的蝌蚪  阅读(111)  评论(0)    收藏  举报