每日一道算法题 成绩排序

发布于:2024-06-26 ⋅ 阅读:(14) ⋅ 点赞:(0)

题目

成绩排序_牛客题霸_牛客网 (nowcoder.com)

Python

n=int(input())
flag=int(input())
ans=[]
for _ in range(n):
    name,score=input().split(' ')
    ans.append([name,int(score)])
ans.sort(key=lambda x:x[1],reverse= not flag)

for e in ans:
    print(e[0],e[1],sep=' ')

C++

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int n,flag;
    cin>>n>>flag;
    vector<pair<string,int>> res(n);
    for(int i=0;i<n;i++)
    {
    cin>>res[i].first>>res[i].second;
    }
    if(flag==0)
    {
        stable_sort(res.begin(),res.end(),[](const pair<string,int> &front,const pair<string,int> &next){
            return front.second>next.second;
        });
    }
    else if(flag==1)
    {
        stable_sort(res.begin(),res.end(),[](const pair<string,int> &front,const pair<string,int> &next){
            return front.second<next.second;
        });
    }
    for(int i=0;i<n;i++)
        cout<<res.at(i).first<<" "<<res.at(i).second<<endl;
    
    return 0;
}

C语言

#include<stdio.h>

typedef struct
{
    char name[20];
    int grade;
}stu;

int main()
{
    int n,flag;
    scanf("%d",&n);
    scanf("%d",&flag);
    
    stu st[n];
    stu temp;
    int i,j;
    for(i=0;i<n;i++)
    {
        scanf("%s",&st[i].name);
        scanf("%d",&st[i].grade);
    }
    if(flag==0)
    {
        for(i=n-1;i>0;i--)
        {
            for(j=0;j<i;j++)
            {
                if(st[j+1].grade>st[j].grade)
                {
                    temp=st[j];
                    st[j]=st[j+1];
                    st[j+1]=temp;
                }
            }
        }
    }
    if(flag==1)
    {
         for(i=n-1;i>0;i--)
        {
            for(j=0;j<i;j++)
            {
                if(st[j+1].grade<st[j].grade)
                {
                    temp=st[j];
                    st[j]=st[j+1];
                    st[j+1]=temp;
                }
            }
        }
    }
    for(i=0;i<n;i++)
    {
        printf("%s %d\n",st[i].name,st[i].grade);
    }
}