```c
#include<stdio.h>
void shellSort(int a[],int n);
int main()
{
int a[1024],i,n,j;
printf("请输入要排序的个数:\n");
scanf("%d",&n);
printf("请输入要排序的数字:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
shellSort(a,n);
printf("排序的结果为:\n");
for(j=0;j<n;j++)
{
printf("%d\t\t",&a[j]);
}
return 0;
}
void shellSort(int a[],int n)
{
int gap,i,j,k,temp;
for(gap=n/2;gap>0;gap=gap/2)
{
for(i=0;i<gap;i++)
{
for(j=i+gap;j<n;j+=gap)
{
temp=a[j];//哨兵
for(k=j-gap;k>=0&&a[k]>temp;k-=gap)
{
a[k+gap]=a[k];
}
a[k+gap]=temp;
}
}
}
}
```