金银铜牌排序【二维数组借用Arrays.sort方法进行排序】

1475: 金银铜奖牌排序

题目描述

奥运会开始了,想请你为各个国家和地区做奖牌排序,按照金牌>银牌>铜牌的格式进行排序

输入

第一行 告诉你共有n个国家

接来下的n 行 每行三个数字 分别代表 金牌数量 银牌数量 铜牌数量 中间用空格隔开

输出

输出n行 每行三个数字 按照题意进行排序

样例输入 复制
复制代码
5
1 2 3
2 3 4
1 4 6
1 4 3
0 3 4
样例输出 复制
复制代码
2 3 4
1 4 6
1 4 3
1 2 3
0 3 4

这道题其实就是利用了Arrays.sort方法,不过这里因为是对二维数组进行排序所以通过传入一个自定义的比较器(Comparator<int[]>),可以指定排序的方式。在这里,比较器通过重写compare方法来实现按每行的第一个元素进行降序排序(第二个参数在前面就是降序,第一个参数在前面就是升序)。

  • compare方法中的Integer.compare(o1[0], o2[0])用于比较两个数组o1和o2的第一个元素(即o1[0]和o2[0])。返回负数表示o1[0]小于o2[0],零表示相等,正数表示o1[0]大于o2[0]
  • 这样,当调用Arrays.sort(arr, comparator)时,数组arr将按照每行第一个元素的升序顺序进行排序。反之则是降序。
java 复制代码
package java基础.Test78;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] arr = new int[n][3];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 3; j++) {
                arr[i][j] = scanner.nextInt();
            }
        }
        Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[0]!=o2[0]){
                    return Integer.compare(o2[0],o1[0]);
                }else if(o1[1]!=o2[1]){
                    return Integer.compare(o2[1],o1[1]);
                }else {
                    return Integer.compare(o2[2],o1[2]);
                }
            }
        });

        // 输出排序后的数组
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }


}
相关推荐
Kuo-Teng6 小时前
LeetCode 279: Perfect Squares
java·数据结构·算法·leetcode·职场和发展
CoderYanger7 小时前
B.双指针——3194. 最小元素和最大元素的最小平均值
java·开发语言·数据结构·算法·leetcode·职场和发展·1024程序员节
SalvoGao7 小时前
Python学习 | 怎么理解epoch?
数据结构·人工智能·python·深度学习·学习
兩尛10 小时前
215. 数组中的第K个最大元素
数据结构·算法·排序算法
9523610 小时前
数据结构-堆
java·数据结构·学习·算法
不会编程的小寒10 小时前
数据结构 2.0
数据结构·算法
while(1){yan}10 小时前
MYSQL索引的底层数据结构
数据结构·数据库·mysql
Wenhao.11 小时前
LeetCode Hot100 每日温度
数据结构·算法·leetcode·golang
CodeAmaz11 小时前
通用 List 分批切割并循环查询数据库工具类
java·数据结构·工具类·分页
xlq2232211 小时前
15.list(上)
数据结构·c++·list