希尔排序:
#include<stdio.h>
void shell(int *a,int n)
{
int gap,i,j,t;
for(gap=n/2;gap>0;gap=gap/2)
{
for (i=gap;i<n;i++)
{
for (j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap)
{
t=a[j];
a[j]=a[j+gap];
a[j+gap]=t;
}
}
}
}
int main()
{
int x[10];
int i;
printf("input the numbers:\n");
for (i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
printf("before sorted :\n");
for(i=0;i<10;i++)
{
printf("%d\t",x[i]);
}
shell(x,10);
printf("after sorted:\n");
for(i=0;i<10;i++)
{
printf("%d\t",x[i]);
}
putchar('\n');
return 0;
}
结果显示如下所示: