知识点
大家别弄混了呀
- Arrays.sort(); 针对数组进行排序
- Collections.sort(); 针对集合进行排序
- list.sort(); 直接对集合进行排序
实现比较器的返回值
- return a - b 按照从小到大进行排序
- return b - a 按照从大到小进行排序
Java代码
import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
public class Main{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] num = new int[n][4]; //二维数组可以看出每n行有4列
for(int i = 0; i < n; i ++) //初始化数组num[][],每一列存储语文,数学,英语,id
{
num[i][0] = in.nextInt();
num[i][1] = in.nextInt();
num[i][2] = in.nextInt();
num[i][3] = i + 1; //因为从0开始循环,id是从1开始的,所以要从+ 1
}
Arrays.sort(num,new Comparator<int[]>(){
@Override
public int compare(int[] a , int[] b){ //传进来的是一行的数据,a = {90,67,80,1} b = {87,66,91,2}
int s1 = a[0] + a[1] + a[2];
int s2 = b[0] + b[1] + b[2];
if(s1 != s2) return s2 - s1; //总成绩按照从大到小排序
if(a[0] != b[0]) return b[0] - a[0]; //语文成绩按照从大到小排序
return a[3] - b[3]; //学号按照从小到大排序
}
});
for(int i = 0; i < 5; i ++) //输出结果
{
System.out.println(num[i][3] + " " + (num[i][0] + num[i][1] + num[i][2]));
}
}
}
太棒了这篇文章!!!
总结的很好