金银铜牌排序【二维数组借用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();
        }
    }


}
相关推荐
passer__jw76721 分钟前
【LeetCode】【算法】283. 移动零
数据结构·算法·leetcode
爱吃生蚝的于勒1 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~1 小时前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
脉牛杂德2 小时前
多项式加法——C语言
数据结构·c++·算法
一直学习永不止步2 小时前
LeetCode题练习与总结:赎金信--383
java·数据结构·算法·leetcode·字符串·哈希表·计数
wheeldown10 小时前
【数据结构】选择排序
数据结构·算法·排序算法
躺不平的理查德14 小时前
数据结构-链表【chapter1】【c语言版】
c语言·开发语言·数据结构·链表·visual studio
阿洵Rain14 小时前
【C++】哈希
数据结构·c++·算法·list·哈希算法
Leo.yuan15 小时前
39页PDF | 华为数据架构建设交流材料(限免下载)
数据结构·华为
半夜不咋不困15 小时前
单链表OJ题(3):合并两个有序链表、链表分割、链表的回文结构
数据结构·链表