#include<bits/stdc++.h>
using namespace std;
int a[10100],n;
void shell(int dk)
{
int i,j;
for(i=dk+1;i<=n;i++)
{
if(a[i]<a[i-dk])
{
a[0]=a[i];
for(j=i-dk;j>0&&a[0]<a[j];j-=dk)
a[j+dk]=a[j];
a[j+dk]=a[0];
}
}
}
int main()
{
while(~scanf("%d",&n))
{
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
shell(n/2);
for(int i=1; i<=n; i++)
printf("%d%c",a[i],i==n?'\n':' ');
shell(1);
for(int i=1; i<=n; i++)
printf("%d%c",a[i],i==n?'\n':' ');
}
return 0;
}
SDUT3403数据结构实验之排序六:希尔排序

最新推荐文章于 2021-06-25 19:14:25 发布
