您的位置:首页 > 理论基础 > 数据结构算法

数据结构实验之排序六:希尔排序

2016-11-21 13:03 267 查看
#include<stdio.h>
#include<algorithm>
int n;
int b[50000],a[50000];
void shell(int a[],int dk)
{
for(int i=dk; i<n; i++)
{
for(int j=i-dk; j>=0; j-=dk)
{
if(a[j]>a[j+dk])
a[j]^=a[j+dk]^=a[j]^=a[j+dk];
}
}
}
int main()
{

while(~scanf("%d",&n))
{
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
}
shell(a,n/2);
for(int i=0; i<n-1; i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
shell(b,1);
for(int i=0; i<n-1; i++)
printf("%d ",b[i]);
printf("%d\n",b[n-1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: