| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 437 人关注过本帖
标题:偶有问题请教!
只看楼主 加入收藏
jmyp
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-1
收藏
 问题点数:0 回复次数:6 
偶有问题请教!
请那位有时间了给我指点迷津吧,偶将不胜感激哦!

有一组学生的信息
num name age score
0 mary 19 90
1 jack 23 87
2 lily 21 85
3 tom 20 95
当我按他们的成绩升序排序(我用的是冒泡排序法)后,他们的其它信息都跟着变了,就是说成绩 (score)与人名、年龄对不起来了;
num name age score
0 mary 19 95
1 jack 23 90
2 lily 21 87
3 tom 20 85
但如果我用下面方法按成绩排序,结果又明显不正确
for(i=0;i<3;++i)
{
for(j=1;j<4;++j)
{
int temp;
if(person[j-1].score<person[j]. score)
{
temp=person[j-1].num;
person[j-1].num=person[j]. num;
person[j].num=temp;
}
}
}
num name age score
1 mary 19 90
0 jack 23 87
3 lily 21 85
2 tom 20 95
其实我想得到的结果是(排序后,name,age,score仍然是一一对应的)
num name age score
程序代码:
<SCRIPT>

</script>
1 mary 19 90
2 jack 23 87
3 lily 21 85
0 tom 20 95
搜索更多相关主题的帖子: 不胜感激 color 信息 
2007-05-10 15:20
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 

你只名字进行了排序,而每一个项目所在的地点却没变,所以会错误你用一个结构将一组数据包含起来,在用对应的数据项排序应该就可以解决


2007-05-10 16:10
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 

struct Student
{
char name[20];
int num,idc;
int age;
}


Student Dt[10]; //假设有10个

int i,j;
for ( i=0; i < 10; i++ ) //按名字帽泡排序
{
for ( j=i+1; j < 10; j++ )
{
if ( strcmp( Dt[i].name,Dt[j].name >= 1 ) // Dt[i] > Dt[j] 大于
{
Student temp;
strcpy(temp.name,Dt[i].name);
temp.num=Dt[i].num;
temp.idc=Dt[i].idc;
temp.age=Dt[i].age;

memset(Dt[i],0,20);
strcpy(Dt[i].name,Dt[j].name);
Dt[i].num=Dt[j].num;
Dt[i].idc=Dt[j].idc;
Dt[i].age=Dt[j].age;

memset(Dt[j],0,20);
strcpy(Dt[j].name,temp.name);
Dt[j].num=temp.num;
Dt[j].idc=temp.idc;
Dt[j].age=temp.age;
}
}
}

[此贴子已经被作者于2007-5-10 17:23:23编辑过]


2007-05-10 17:13
jmyp
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-1
收藏
得分:0 
谢谢余来不厌其烦地指教哦!
2007-05-10 22:18
modelmomo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-10-22
收藏
得分:0 
首先你肯定像楼上一样定义了一个结构或类吧,其实你把下你给的代码这样该一下应该就好了
for(i=0;i<3;++i)
{
for(j=1;j<4;++j)
{
//int temp;改了的地方
struct Student temp;//假设你像楼上那样定义了一个Student的结构吧
if(person[j-1].score<person[j]. score)
{
temp=person[j-1];
person[j-1]=person[j];
person[j]=temp;
}
}
}
这样的话,你就把整体的信息一起按score冒泡排序了
2007-05-12 19:57
jmyp
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-1
收藏
得分:0 
modelmomo好厉害啊,这样我的程序可以简化许多了,而且更加清晰易懂了!
非常感谢!
向您学习!
2007-05-13 15:16
快速回复:偶有问题请教!
数据加载中...
 
   



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

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