快速排序的问题!

pehaps 2009-06-16 07:20:48
#include<stdio.h>
#include<stdlib.h>
struct name
{ int xuehao ;//xuehao
int score;
}s[100];
void swap(name &s1,name &s2)
{ name temp;
temp.xuehao=s1.xuehao;
temp.score=s1.score;
s1.xuehao=s2.xuehao;
s1.score=s2.score;
s2.xuehao=temp.xuehao;
s2.score=temp.score;
}


void paixu(name *s,int k)
{ if(k>1)
{
int info=s[0].score;
int key_1=k-1;
int key_2=0;
int key_control=0;
while(key_1!=key_2)
{
if(key_control==0)
{
if(s[key_1].score<info)
{
swap(s[key_1],s[key_2]);
key_2++;
key_control=1;
}
else
key_1--;
continue;
}

if(key_control==1)
{
if(s[key_2].score>info)
{
swap(s[key_2],s[key_1]);
key_1--;
key_control=0;
}
else
key_2++;
}
//paixu(s,key_1);
//paixu(s+key_1+1,k-key_1-1);

}
}
}

int main()
{ int k;
printf("请输入学生的人数!\n");
scanf("%d",&k);
for(int i=0;i<k;i++)
{
printf("请输入第%d个学生的学号和得分\n",i+1);
scanf("%ld",&s[i].xuehao);
scanf("%d",&s[i].score);
}
paixu(s,k);
for( int j=0;j<k;j++)
{
printf("第%d个学生的学号和得分 ",j+1);
printf("%ld ",s[j].xuehao);
printf("%d\n",s[j].score);
}
return 0;
}

结果不能正确输出,测试数据为 49 38 65 97 76 13 27 49 结果为 13 27 39 49 76 49 65 97




...全文
56 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liusichen_0 2009-06-22
  • 打赏
  • 举报
回复
好运
learnEmbeddedDev 2009-06-22
  • 打赏
  • 举报
回复
哈希排序对空间要求高吗
  • 打赏
  • 举报
回复
用哈希表排序更快吧
will_g 2009-06-17
  • 打赏
  • 举报
回复
搞定了 ?? 分送了吧
jtujtujtu 2009-06-16
  • 打赏
  • 举报
回复
呵呵
常有的事情
  • 打赏
  • 举报
回复
..搞定了?恭喜
pehaps 2009-06-16
  • 打赏
  • 举报
回复
终于找到了,一个括号的问题,死活看不出!郁闷,我的时间啊!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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