链接:
https://www.nowcoder.com/questionTerminal/3f27a0a5a59643a8abf0140b9a8cf1f7
来源:牛客网
来源:牛客网
[编程题]成绩排序
- 热度指数:6224时间限制:1秒空间限制:65536K
- 算法知识视频讲解
用一维数组存储学号和成绩,然后,按成绩排序输出。
输入描述:
输入第一行包括一个整数N(1<=N<=100),代表学生的个数。 接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。 如果学生的成绩相同,则按照学号的大小进行从小到大排序。
示例1
输入
3 1 90 2 87 3 92
输出
2 87 1 90 3 92
水题,主要复习下comparator的写法。
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class Student implements Comparable<Student> {
private int number;
private int score;
public Student() {}
public Student(int n, int s) {
number = n;
score = s;
}
public int getNumber() {
return number;
}
public void setNumber(int n) {
number = n;
}
public int getScore() {
return score;
}
public void setScore(int s) {
score = s;
}
public int compareTo(Student st) {
if (this.score == st.getScore())
return this.number - st.getNumber();
else
return this.score - st.getScore();
}
}
public class Main {
public static void main(String[] args) {
int cnt = 0;
Scanner in = new Scanner(System.in);
cnt = in.nextInt();
Student st[] = new Student[cnt];
for (int i = 0; i < cnt; ++i) {
st[i] = new Student();
st[i].setNumber(in.nextInt());
st[i].setScore(in.nextInt());
}
Arrays.sort(st);
for (int i = 0; i < st.length; ++i) {
System.out.println(st[i].getNumber() + " " + st[i].getScore());
}
}
}