import java.util.*;/** * @author Raint * @date 2022年07月04日 21:49 */class Student{ private int grade; private String name; public static final Comparator<Student> INCREASE = new increase(); public static final Comparator<Student> DECREASE = new decrease(); public Student(String name, int grade) { this.name = name; this.grade = grade; } public String toString() { return name + " " + grade; } private static class increase implements Comparator<Student> { public int compare(Student v, Student w) { return w.grade - v.grade; } } private static class decrease implements Comparator<Student> { public int compare(Student v, Student w) { return v.grade - w.grade; } }}public class Main { /** 描述 给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 成绩 smith 67 jack 70 Tom 70 peter 96 注:0代表从高到低,1代表从低到高 数据范围:人数:1\le n \le 200\1≤n≤200 进阶:时间复杂度:O(nlogn)\O(nlogn) ,空间复杂度:O(n)\O(n) 输入描述: 第一行输入要排序的人的个数n,第二行输入一个整数表示排序的方式,之后n行分别输入他们的名字和成绩,以一个空格隔开 输出描述: 按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开 示例1 输入: 3 0 fang 90 yang 50 ning 70 输出: fang 90 ning 70 yang 50 示例2 输入: 3 1 fang 90 yang 50 ning 70 输出: yang 50 ning 70 fang 90 */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); int flag = scanner.nextInt(); Student[] students = new Student[n]; for (int i = 0; i < n; i++) { students[i] = new Student(scanner.next(), scanner.nextInt()); } // 根据flag正序或者逆序输出数组 if (flag == 0) { // 正序 Arrays.sort(students, Student.INCREASE); } else { // 逆序 Arrays.sort(students, Student.DECREASE); } for (Student student : students) { System.out.println(student); } } }}