希尔排序是插入排序其中的一种;有别于普通的排序方式的是,数据并不是一个一个的进行比较移动,而是通过增量d来实现的。每次的比较和移动都是移动d个位置。然后再不断的缩小d的值,直到d的值缩减为0…
void shellsort (int *a,int n)
{
int i,j;
int temp;
int d=n/2;
while (d>0) //增量不断缩减的过程.
{
for(i=d;i<n;i++) //从a[d]位置开始到这组数据全部比较完为止。
{
temp =a[i]; j=i-d;
while(j>=0&&a[j]>temp) // j的值是否等于0需要根据排序的的数组的数据是否从a[0]开始来决定。。
{
a[j+d]=a[j];
j=j-d;
}
a[j+d]=temp;
}
d=d/2;
}
}