首页 > 解决方案 > 根据arr[i]之和对二维int数组从低到高排序

问题描述

在对整数二维数组进行排序的作业中,我陷入了死胡同。

指令是创建一个函数,该函数采用二维 int 数组(不一定是矩阵)并根据内部数组的总和对外部数组进行排序。换句话说,数组的第一个索引应该是总和最小的内部数组。

示例 - 输入 - int[][] 数组 = {{2, 4, 1,9,9,9,9}, {6, 8}, {7, 3, 6, 5, 1}};

输出 - 数组 = {{6, 8}, {7, 3, 6, 5, 1}, {2, 4, 1,9,9,9,9}};

到目前为止,我的逻辑是创建一个新的一维数组,其中将包含主数组中每个内部数组的总和。并根据它进行排序。

public static int[] arraysCalculator(int[][] arr) { 
int[] sums = new int[arr.length];
int sum= 0;
for(int i = 0; i  < arr.length; i++)
{
    for(int j = 0; j < arr[i].length; j++)
    {
        sum += arr[i][j];
    }
    sums[i] = sum;
    sum = 0;
}

标签: javaarrayssortingmultidimensional-array

解决方案


您可以int[]通过流式传输然后调用sum(). 从那里,只需调用Arrays.sort一个比较这个总和的比较器:

Arrays.sort(array, Comparator.comparingInt(a -> Arrays.stream(a).sum()));

推荐阅读