17.依据身高体重次序排序

身高从低到高,身高相同体重从轻到重,体重相同维持原来顺序。
输入
4
100 100 120 130
40 30 60 50
输出:
2 1 3 4

输入
3
90 110 90
45 60 45
输出
1 3 2

 

查看代码

import java.util.*;

public class Demo17 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        String[] high = sc.nextLine().split(" ");
        String[] weigh = sc.nextLine().split(" ");

        //身高、体重、序号三个变量的处理
        int[][] ints = new int[n][3];
        for(int i = 0; i < n; i++){ //好好理解二维数组,从一维到二维,行列角度
            ints[i][0] = i + 1;
            ints[i][1] = Integer.parseInt(high[i]);
            ints[i][2] = Integer.parseInt(weigh[i]);
        }

        Arrays.sort(ints, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[1] == o2[1])
                    return o1[2] -o2[2];
                else
                    return o1[1] - o2[1];
            }
        });

        for(int[] i : ints){
            System.out.print(i[0] + " ");
        }
    }
}

 

思考:为什么在定义二维数组时,不是 int[][] ints = new int[3][n]? 

          在排序时,(int[] o1, int[] o2) 其中的o1 o2存储的数据有哪些?

          本质上还是一维,只不过相对于普通一维中存储的是基本类型,这里存储的数组类型,==》形成二维。

 

 

 

posted @ 2022-03-26 09:01  Jukim  阅读(1235)  评论(0编辑  收藏  举报