输入几个学生的姓名和成绩,要求分数相同时顺序相对输入时不变(即要求稳定排序),进行排序后输出。
如输入4个学生的成绩表如下:
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100;
int n;
//定义学生的结构体
struct Student{
string name;
int score;
int id;
//重载运算符用于进行比较
bool operator< (const Student& t) const
{
if(score!= t.score) return score<t.score;
else return id<t.id;
}
bool operator> (const Student& t) const
{
if(score!=t.score) return score>t.score;
else return id<t.id;
}
}r[N];
int main(){
cin>>n;
//输入学生信息
for(int i=0;i<n;i++){
cin>>r[i].name>>r[i].score;
r[i].id=i;
}
//对学生信息进行降序排序
sort(r,r+n,greater<Student>());
//输出学生信息
for(int i = 0;i<n;i++){
cout<<r[i].name<<' '<<r[i].score<<endl;
}
return 0;
}