考研算法
题目
题目要求
关键字排序
C++代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N=110;
struct student
{
int id;
int score;
bool operator< (const student &s) const
{
if (score!=s.score) return score<s.score;
return id<s.id;
}
}p[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>p[i].id>>p[i].score;
}
sort(p,p+n);
for (int i=0;i<n;i++)
{
cout<<p[i].id<<' '<<p[i].score<<endl;
}
return 0;
}
关键知识点
运算符重载并定义实现关键字排序
bool operator< (const student &s) const
{
if (score!=s.score) return score<s.score;
return id<s.id;
}
python代码
n=int(input())
lis=[]
for i in range(n):
a,b=map(int,input().split())
lis.append((a,b))
lis.sort(key=lambda s:(s[1],s[0]))
for i in range(n):
print(str(lis[i][0])+' '+str(lis[i][1]))
关键知识点
Python关键字排序 - 三水一人山 - 博客园 (cnblogs.com)
arr.sort(key=lambda s:(s[0],s[1])) #两个关键字排序
arr.sort(key=lambda s:(s[0],-s[1])) #两个关键字排序,在需要倒序排列的关键字前加-号