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


}
相关推荐
晚枫歌F7 小时前
btree B树实现key-value存储
开发语言·数据结构
wangchen_07 小时前
B树、B+树详解
数据结构·b树·哈希算法
无尽的罚坐人生7 小时前
hot 100 101. 对称二叉树
数据结构·算法·leetcode
一叶落4388 小时前
【LeetCode】1. 两数之和(Two Sum)— 哈希表经典题解(C语言)
数据结构·c++·算法·leetcode
m0_672703318 小时前
上机练习第43天
数据结构·算法
菜菜小狗的学习笔记8 小时前
数据结构(二)队列和栈
数据结构
不想看见4049 小时前
Add Strings数字处理--力扣101算法题解笔记
数据结构·算法·leetcode
@我漫长的孤独流浪10 小时前
C算法设计与分析------程序设计代码
数据结构·c++·算法
Filotimo_10 小时前
3.5 排序算法
数据结构·算法·排序算法
liu****10 小时前
1.反向迭代器实现思路
数据结构·c++·反向迭代器·vector·list