计算机历年考研复试上机题------成绩排序

这道题他的题目描述有一点模糊,他的测试用例上面在对于相同的值排序应该排序前后顺序不变。这时我们就要用到C++ sort类函数stable_sort()。

  • stable_sort 排序前后相同元素的值相对顺序不变

题目描述:

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示: jack 70 peter 96 Tom 70 smith 67
从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 > 从低到高 smith 67 Tom 70 jack 70 peter 96
输入描述:
输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开 输出描述:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1 输入

3 0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

下面直接上代码:

#include<iostream>  
#include<algorithm> 
using namespace std;

struct node {
    int grade;
    char  name[500];
};
int flag;
bool comper(node a, node b)
{
    if (!flag)
    {
        return a.grade > b.grade;
    }
    return a.grade < b.grade;
}
int main() {
    int num;

    node per[500];
    while (~scanf("%d%d", &num, &flag))
    {
        for (int i = 0; i < num; i++)
        {
            scanf("%s%d", per[i].name, &per[i].grade);
        }
        stable_sort(per, per + num,comper);
        for (int i = 0; i < num; i++)
        {
            printf("%s %d\n", per[i].name, per[i].grade);
        }
    }
    return 0;
}

题目传送门

猜你喜欢

转载自blog.csdn.net/qq_34333801/article/details/80353590