考研算法 2022.2.24

148 阅读1分钟

考研算法

题目

题目链接

题目要求

关键字排序

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])) #两个关键字排序,在需要倒序排列的关键字前加-