求一个简单的算法

huang_2 2002-08-15 10:52:34
A 5 150
B 5 160
C 6 120
D 4 180
E 4 130


写一个函数把他排序成这样

降序 升序
C 6 120
A 5 150
B 5 160
E 4 130
D 4 180

A,B,C分别是参赛者
...全文
23 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huang_2 2002-08-15
  • 打赏
  • 举报
回复
我知道是这样啊,但我现在对c的语法不是很熟悉,请帮我把代码写出来啦
leeseon 2002-08-15
  • 打赏
  • 举报
回复
6,5、、、是主排列

120,150、是次排列

可以先对主的排序,然后主序相同的再按次序排

或者先用次序排,然后用主序做插入,具体的排序可以选择得多种,不过最优的一种嘛、、、让我想一想,不过都差不多
huang_2 2002-08-15
  • 打赏
  • 举报
回复
遇到相同分数的时候就要按第二列排序
Pipi0714 2002-08-15
  • 打赏
  • 举报
回复
用冒泡排序法。一个一个的把大的往上冒最后就是要求的结果。冒泡排序是最简单的常见的算法。可以参照一些参考书
dycdyc123 2002-08-15
  • 打赏
  • 举报
回复
void Convert(tag_Stu p[n],int n)
{
tag_Stu temp;
int TheN;
int Max=0;
for(int j=0;j<n;j++)
{
for(int i=j;i<n;i++)
{
if(p[i].first>=Max) {Max=p[i].first;TheN=i;} //运行一次后TheN是最大的
}
temp.first=p[j].first;
temp.second=p[j].second;
temp.name=p[j].name;

p[j].first=p[TheN].first;
p[j].second=p[TheN].second;
p[j].name=p[TheN].name;

p[TheN].first=temp.first;
p[TheN].second=temp.second;
p[TheN].name=temp.name;
} //完成第一主键的搜索

for(i=0;i<n-1;i++) //完成第二主键的搜索
{
if(p[i].first==p[i+1].first) //相对
{
if(p[i].second>p[i+1].second)
{
temp.second=p[i].second;
temp.name=p[i].name;


p[i].second=p[i+1].second;
p[i].name=p[i+1].name;

p[i+1].second=temp.second;
p[i+1].name=temp.name;
//交换
}
}
}
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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