首页 > 试题广场 >

成绩排序

[编程题]成绩排序
  • 热度指数:224375 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给出的 n 位同学的姓名和成绩,根据输入要求,按成绩升序或降序排列。

输入描述:
\hspace{15pt}第一行输入一个整数 n \left(1 \leqq n \leqq 200\right) 代表学生人数。
\hspace{15pt}第二行输入一个整数 op \left(0 \leqq op \leqq 1\right) 代表排序方式,其中,0 表示按成绩降序,1 表示按成绩升序。
\hspace{15pt}此后 n 行,第 i 行输入一个长度为 1 \leqq {\rm len}(s_i) \leqq 20、由大小写字母混合构成的字符串 s_i 代表第 i 个学生的姓名。随后,在同一行输入一个整数 a_i \left(1 \leqq a_i \leqq 100\right) 代表这个学生的成绩。

\hspace{15pt}除此之外,保证输入数据中不存在重复的学生姓名。


输出描述:
\hspace{15pt}根据输入的排序方式,按照成绩升序或降序输出所有学生的姓名和成绩。对于每一名学生,新起一行。输出学生的姓名和成绩,用空格分隔。
示例1

输入

3
0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

说明

\hspace{15pt}在这个样例中,op = 0,因此按成绩降序排序。
示例2

输入

3
1
fang 90
yang 50
ning 70

输出

yang 50
ning 70
fang 90

说明

\hspace{15pt}在这个样例中,op = 1,因此按成绩升序排序。
头像 陶陶2021
发表于 2021-10-10 16:58:34
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args){ Scanner sc = new Sc 展开全文
头像 小陆要懂云
发表于 2021-08-15 11:51:30
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main() { int n,flag; 展开全文
头像 光亮Hikaryou
发表于 2021-09-29 02:20:41
while 1: try: n = int(input()) if input() == "0": flag = True else: flag = False 展开全文
头像 派仔
发表于 2020-08-08 18:18:25
使用 Comparator import java.util.*; class Student{ private int grade; private String name; public static final Comparator<Student> IN 展开全文
头像 江南好___
发表于 2021-12-09 23:03:34
描述 输入描述: 输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开 输出描述: 按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开 示例 输入: 3 0 fang 90 yang 50 ning 70 输出: fang 90 ning 70 yang 50 知识 展开全文
头像 BSF
发表于 2021-10-18 20:44:42
while True: try: n, order = int(input()), int(input()) data = [] # 不能用字典保存,因为可能有名字是重复的 for _ in range(n): name 展开全文
头像 呆喵挠琴
发表于 2021-12-03 17:41:24
题目的主要信息: 输入任意用户、成绩序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。 方法一: 用user结构保存用户的姓名和成绩,用一个vector保存用户成绩单表,flag中储存着排序信息,flag=1表示从低到高排序,flag=0表示从高到低排序。stable 展开全文
头像 dazicon
发表于 2021-10-31 17:51:23
let n; while (n = parseInt(readline())) { let flag = parseInt(readline()); let score = []; for (let i = 0; i < n; i++) { let it 展开全文
头像 君君橙
发表于 2021-03-26 11:10:01
成绩排序 注意点: 把下面的列表换成字典有可能过不了,因为有可能存在重名的同学; 如果想要更快,可以在 while 的时候使用插入排序; 这题我调了好久,就是因为一开始想省事直接用成绩的字符串排的。学的时候看到的例子都是 '8' > '3' 这种,弄得我以为数字字符串排序和数字一样,结果今天 展开全文
头像 米斯特rollin
发表于 2022-05-01 10:48:42
题解 使用jdk8的新特性stream对数据进行,升序或降序排序。 代码 import java.util.Scanner; import java.util.List; import java.util.ArrayList; import java.util.stream.Collectors; 展开全文