希尔排序,又称缩小增量排序。
将需要排序的序列划分为若干个较小的序列,对这些序列进行直接插入排序,通过这样的操作可使需要排序的数列基本有序,最后再使用一次直接插入排序。
void shellsort(int a[],int n)
{int d,i,j,x;
d = n /2;
while(d >= 1)
{
for(i=d;i<n;i++)
{
x = a[i];
j = i - d;
while(j >= 0 && a[j] > x)
{
a[j+d] = a[j];
j = j - d;
}
a[j+d] = x;
}
d /= 2;
}
}