| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1251 人关注过本帖
标题:[求助]快速排序法那里有错误?
只看楼主 加入收藏
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
结帖率:100%
收藏
 问题点数:0 回复次数:23 
[求助]快速排序法那里有错误?


#include "stdio.h"
#include "stdlib.h"
#define N 5
int sort(int *d,int e,int f);

int main()
{
int a[N];
int i;

printf("请输入五个数:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输入的数为:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);

sort(a,0,N);
printf("排好序的数为:\n");
for(i=0;i<N;i++)
printf("%d ",*(a+i));
return 0;
}
int sort(int *d,int e,int f)
{
int x,y,z,t;

y=f-1;
z=e+1;
while(y>0)
{
x=*(d+e);
while(z!=y)
{
if(*(d+y)>=x&&z<y)
y--;
*(d+z)=*(d+y);
if(*(d+z)<=x&&y>z)
z++;
*(d+y)=*(d+z);
}

*(d+z)=x;
sort(d,e,z-1);
sort(d,z+1,f);
}
return z;

}

[此贴子已经被作者于2007-10-30 20:37:47编辑过]

搜索更多相关主题的帖子: 快速 include return 
2007-10-27 19:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
w=partition(*b,m,n);
sort(*b,m,w);
sort(*b,w+1,n);

汗...

倚天照海花无数,流水高山心自知。
2007-10-27 19:26
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
w=partition(*b,m,n);
sort(*b,m,w);
sort(*b,w+1,n);

参数调用,是b

Fight  to win  or  die...
2007-10-27 19:28
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 
回复:(aipb2007) w=partition(*b,m,n); sort(*...

改过了 但是还是有 错误 ,没法执行排序.


qq:304742297
2007-10-28 20:42
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 
回复:(nuciewth)w=partition(*b,m,n); sort(*b,m...
改过了 但是还是有 错误 ,没法执行排序.

qq:304742297
2007-10-28 20:49
yelv123
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-6-12
收藏
得分:0 
return 0;
好像不用吧~~~~~~~
2007-10-28 21:27
chmlqw
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-10-11
收藏
得分:0 
while(y>0)
{
while(z<y)
{
if(*(d+y)>x)
y=y-1;
if(*(d+z)<x)
z=z+1;
while(z<y)
t=*(d+z);
*(d+z)=*(d+y);
*(d+y)=t;
} }
return z;



差了一个括号
2007-10-28 21:30
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 

都改过了。还是不中。
程序好象进入到了死循环了。


qq:304742297
2007-10-29 10:24
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 

#include "stdio.h"
#include "stdlib.h"
#define N 5


int partition(int *d,int e,int f)
{
int x,y,z,t;
e=z;
f=y;
x=*(d+e);
while(y>0)
{
while(z!=y)
{
if(*(d+y)>x)
{ y=y-1;}
else
{ t=x;
x=*(d+y);
*(d+y)=x;
}
if(*(d+z)<x)
{ z=z+1;}
else
{t=*(d+z);
*(d+z)=*(d+y);
*(d+y)=t;
}

partition( d, e, f);
}
}
main()
{

int a[N];
int i;
printf("请输入五个数:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输入的数为:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);

partition(a,0,N-1);
printf("排好序的数为:\n");
for(i=0;i<N;i++)
{ printf("%d ",a[i];}
return 0;
}
那里 还有错误?


qq:304742297
2007-10-30 09:05
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
收藏
得分:0 

可能在排序里还有什么东西没返回,再好好查查


West and east,home is best……
2007-10-30 09:31
快速回复:[求助]快速排序法那里有错误?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017085 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved