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

对快速排序的理解好像不够,以下是根据你的程序的改编,试试吧

#include <stdio.h>
#include <stdlib.h>
#define N 5


int partition(int *d,int e,int f)
{
int x,y,z,t;
z=e; //e=z;
y=f; //f=y;
x=*(d+e);

if (e >= f) return 0;

while(y>z)
{
while(y > z)
{
if(*(d+y)>x)
{ y=y-1;}
else
{ *(d+z) = *(d+y); break;
}
}
while (z < y) {
if(*(d+z)<x)
{ z=z+1;}
else
{*(d+y) = *(d+z); break;
}
}
}
*(d+z) = x;

partition( d, e, z-1);
partition( d, z+1, f);

return 0;
}

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]);

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

2007-10-31 22:48
chmlqw
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-10-11
收藏
得分:0 

#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-1); /* 直接带数组下标,不要换来换去的,头都晕了 */
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;
z=e;
while(y>0)
{
x=*(d+e);
while(z!=y)
{
while(*(d+y)>=x && z<y) /* 这里肯定是while ,不能是if 嘛 */
y--; /* 因为是要找到一个不是大于X的数 */
if (z != y) /* 如果相等,就退出 */
{
*(d+z)=*(d+y);
while(*(d+z)<=x&&y>z) /* 同样是循环,不是条件 */
z++;
if (z != y)
*(d+y)=*(d+z);
}
}
*(d+z) = x; /* 当排序完了,才把X值给(d+z) */
if (e+1 != z && e!=z) sort(d,e,z-1); /* 当只有一个元素时,就不用排序了 */
if (f-1 != z && f!=z) sort(d,z+1,f); /* 一样的道理 */
return z;
}
}

我改你的程序,头的大了,错得很多啊........

2007-10-31 23:15
jxt598598
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-6-13
收藏
得分:0 

谢谢大家了。我的程序终于调通了。


qq:304742297
2007-11-01 12:16
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
感谢二四二楼兄弟详细解释,我也略懂了些快速排序
2010-07-24 09:29
快速回复:[求助]快速排序法那里有错误?
数据加载中...
 
   



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

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