C语言希尔排序的问题!本人新手,刚学希尔,写的有些冗长,但是上交校题库的时候,冒泡排序不超时,希尔超时了不知道哪里错了求大神解答!

ryzyxy123 2015-10-31 01:24:55
#include<stdio.h>
void swap(int a[],int i,int j)
{
int t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
void shellsort(int a[],int low,int high,int p)//p为那个选择的长度最后会变成1的那个
{
int i,n=0;
if(p==1)
{
for(i=low;i<high;i++)
if(a[i]>a[i+1])
{
n=1;
break;
}
if(n)
for(i=low;i<=high-p;i++)
{
if(a[i]>a[i+p])
swap(a,i,i+p);
}
return;
}
p/=2;
for(i=low;i<=high-p;i++)
{if(a[i]>a[i+p])
swap(a,i,i+p);
}
for(i=low;i<=high;i++)
shellsort(a,low,high,p);
return;
}

int main()
{
int i,j,a[20000],b,m,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
shellsort(a,0,n-1,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");

}
return 0;
}
...全文
62 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧