排序问题题解大合集
算法1
我们用结构体来进行排序
我们的结构是这样的:
成绩
名字
年龄
所以我们就可以得出一下代码
bool cmp(node A,node B){
if(A.b!=B.b)return A.b<B.b;
else if(A.name!=B.name)return A.name<B.name;
else return A.a<B.a;
}
- 只要成绩没重复,我们就排序
- 如果条件一重复了,我们就看只要名字没重复,我们就排序
- 如果条件一和条件二都重复了,我们就拿年龄排序
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
struct node{
string name;
int a,b;
}f[1001];
bool cmp(node A,node B){
if(A.b!=B.b)return A.b<B.b;
else if(A.name!=B.name)return A.name<B.name;
else return A.a<B.a;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>f[i].name>>f[i].a>>f[i].b;
sort(f+1,f+1+n,cmp);//快排
for(int i=1;i<=n;i++){
cout<<f[i].name<<' '<<f[i].a<<' '<<f[i].b<<'\n';
}
}