题解 | #成绩排序#自己写一个冒泡排序即可
成绩排序
https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1
//不能直接用sort,因为sort排序不稳定,会改变原有纪录的顺序
#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct student
{
string name;
int score;
};
void Mysort(vector<student> &v,int flag)
{
int index;
if(flag==0)
{
for(int i=0;i<v.size();i++)
{
index=0;
for(int j=0;j<v.size()-1-i;j++)
{
if(v[j].score<v[j+1].score)
{
student s=v[j];
v[j]=v[j+1];
v[j+1]=s;
index=1;
}
}
if(index==0)return;
}
}
else {
for(int i=0;i<v.size();i++)
{
index=0;
for(int j=0;j<v.size()-1-i;j++)
{
if(v[j].score>v[j+1].score)
{
student s=v[j];
v[j]=v[j+1];
v[j+1]=s;
index=1;
}
}
if(index==0)return;
}
}
}
int main() {
vector<student>v;
int n;
int flag;
while(cin>>n>>flag)
{
student s;
for(int i=0;i<n;i++)
{
cin>>s.name;
cin>>s.score;
v.push_back(s);
}
Mysort(v,flag);
for(int i=0;i<v.size();i++)
{
cout<<v[i].name<<" "<<v[i].score<<endl;
}
v.clear();
}
return 0;
}
// 64 位输出请用 printf("%lld")