#include<stdio.h>#define max 100 //数组大小void shellsort(int *a,int n)
{
int delta,i,j; for(delta=n/2;delta>0;delta/=2)
{
for(i=delta;i<n;i++)
{
int temp=a[i]; for(j=i-delta;j>=0;j-=delta)
{
if(temp<a[j])a[j+delta]=a[j]; else break;
}
a[j+delta]=temp;
}
}
}//输出排序之后的数据序列void print(int *a,int n)
{
int i; for(i=0;i<n;i++)
{
printf("%d ",a[i]);
} printf("\n");
}//主函数int main()
{
int a[max]; int n;//输入的数据个数
scanf("%d",&n); int i; for(i=0;i<n;i++) scanf("%d",&a[i]);
shellsort(a,n);
print(a,n); return 0;
}
运行结果如下:
转载于:https://blog.51cto.com/10602803/1682973