经典排序算法的汇总之希尔(shell)排序
// shell排序 从开始的n/2为gap开始 ,从第一个数开始 每次加一个gap 直到加的gap
//加到数组r右边 所以 每次也就是gap个分组 每个分组使用插入排序
void shellsort(int a[],int l,int r)
{
int n=r-l+1,x;
int gap=n/2;
while(gap>0)
{
for(int i=0;i<gap;i++)
{
for(int j=i+gap;j<=r;j+=gap)
{
x=a[j];
int k=j;
while(x<a[k-gap])
{
a[k]=a[k-gap];
k-=gap;
}
a[k]=x;
}
}
gap/=2;
}
}