测试数据:
13
81 94 11 96 12 35 17 95 28 58 41 75 15
部分数据位置变化:
81 94 11 96 12 35 17 95 28 58 41 75 15
17 94 11 96 12 35 81 95 28 58 41 75 15
17 94 11 58 12 35 81 95 28 96 41 75 15
17 94 11 58 12 35 15 95 28 96 41 75 81
15 94 11 58 12 35 17 95 28 96 41 75 81
#include<stdio.h>
void shellsort(int an[],int n)
{
int i,j,increment,tmp;
for(increment=n>>1;increment>0;increment>>=1)
{
for(i=increment;i<n;i++)
{
tmp=an[i];
for(j=i;j>=increment;j-=increment)
{
if(tmp<an[j-increment])
an[j]=an[j-increment];
else
break;
}
an[j]=tmp;
}
}
}
int main()
{
int n,an[1000]={0};
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&an[i]);
}
shellsort(an,n);
for(int i=0;i<n;i++)
{
printf("%d ",an[i]);
}
return 0;
}