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


}
相关推荐
前端小L11 小时前
图论专题(二):“关系”的焦点——一眼找出「星型图的中心节点」
数据结构·算法·深度优先·图论·宽度优先
叫我龙翔11 小时前
【数据结构】从零开始认识B树 --- 高效外查找的数据结构
数据结构·c++·b树
点云SLAM12 小时前
C++ 中的栈(Stack)数据结构与堆的区别与内存布局(Stack vs Heap)
开发语言·数据结构·c++·内存布局·栈数据结构·c++标准算法·heap内存分配
前端小L13 小时前
图论专题(六):“隐式图”的登场!DFS/BFS 攻克「岛屿数量」
数据结构·算法·深度优先·图论·宽度优先
-大头.13 小时前
Python数据结构之旅:09-图论基础——连接万物的网络
数据结构·图论
zz07232013 小时前
数据结构 —— 队列
数据结构
Bear on Toilet14 小时前
C++_Bug:现代写法拷贝构造中 swap 写法之小坑
数据结构·c++·bug
潼心1412o14 小时前
数据结构(长期更新)第8讲:队列
数据结构
fashion 道格15 小时前
C 语言希尔排序:原理、实现与性能深度解析
数据结构·算法·排序算法
如意猴15 小时前
实现链式结构二叉树--递归中的暴力美学(第13讲)
数据结构