希尔排序是 在 直接插入排序基础之上做出的改进;
将要进行排序的序列按固定增量分成若干组,等距离者在同一组中,然后再在组中进行直接插入排序
#include <stdio.h>
void insort (int s[],int n)
{
int i,j,d;
while(d >= 1)
{
for(i = d+1;i<=n;i++)
{
s[0] = s[i];
j = i-d;
while ((j>0) && (s[0] <s[j]))
{
s[j+d]= s[j];
j= j-d;
}
s[j+d] = s[0];
}
d = d/2;
}
}
void main()
{
int a[11];
int i;
printf("请输入 10 个数据:");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("原始顺序是: ");
for (i=0;i<10;i++)
printf("%3d",a[i]);
insort(a,10);//调用 自定义函数 insort()
printf("\n插入数据排序后的顺序是:");
for (i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}