当前位置: 首页 > 知识库问答 >
问题:

用3列对二维数组进行排序

慕迪
2023-03-14

按列对数组进行排序,就像我想在这里对最后一行上的值进行排序一样,根据排序结果,同一行中其他列上的数字也可能会发生变化

例如

int[]array={{1,5,3},{2,6,4},{12,10,1},{30,75,1}

输出应该是

{12,10,1}{30,75,1}{1,5,3}{2,6,4}

'system.out.println("Entre la cantidas de Procesos que quiere correr:"); int pros=scan.nextInt();

                int[][] myArr = new int[pros][3];

                for(int i=0; i< pros; i++){


                    System.out.println("CPU Burst proceso "+count+" :");
                     time2=scan.nextInt();

                     System.out.println("Arrival Time proceso "+count+" :"); 
                      arrt=scan.nextInt();


                      myArr[i][0]=count;
                      myArr[i][1]=time2;
                      myArr[i][2]=arrt;


                count++;
                }


                Arrays.sort(myArr, new Comparator<int[]>() {
                    public int compare(int[] o1, int[] o2) {
                        return Integer.compare(o2[2], o1[2]);
                    }
                });



                System.out.println(Arrays.deepToString(myArr)); `

共有2个答案

郭逸清
2023-03-14

让我们构造一个长度与array.length相同的辅助数组:

int[] thirdColumnValues = new int[array.length];

然后我们可以复制第三列的值:

for(int i = 0; i < array.length; i++) {
  thirdColumnValues[i] = array[i][2];
}

然后我们可以对这个辅助数组进行排序:

Arrays.sort(thirdColumnValues);

然后我们可以将排序后的值存储回原始数组:

for(int i = 0; i < array.length; i++) {
  array[i][2] = thirdColumnValues[i];
}
方昊阳
2023-03-14

您可以使用自定义的比较器按第三个元素比较数组。

我们可以使用以下比较器:

(a1, a2) -> Integer.compare(a1[2], a2[2])

它接受两个数组作为参数,并返回Integer的结果。在第三个元素上比较()。

例如:

int[][] array = {{1, 5, 3}, {2, 6, 4}, {12, 10, 1}, {30, 75, 1}};
Arrays.sort(array, (a1, a2) -> Integer.compare(a1[2], a2[2]));
System.out.println(Arrays.deepToString(array));

输出:

[[12, 10, 1], [30, 75, 1], [1, 5, 3], [2, 6, 4]]

 类似资料:
  • 问题内容: 我将向您展示有关该问题的目的的示例。我之前拥有的数组以及排序后如何使用它: 之前: 之后: 我们在int矩阵中工作: 排序基于第二列Weight.Am,以查找对数据数组进行排序的过程。 我尝试了这个,但不幸的是我没有找到正确的泡菜排序方法。请问有帮助吗? 问题答案: 使用带有自定义。 作为shmosel 下文提到的,与Java 8中,您可以使用:

  • 问题内容: 请原谅我这是多余的还是超基本的。我要从R进入Python / Numpy,并且很难在脑海里翻转事物。 我有一个维数组,我想使用索引值的另一个n维数组进行排序。我知道我可以将其包装成一个循环,但是似乎应该有一种非常简洁的Numpyonic方式将其击败并提交。这是设置n = 2的问题的示例代码: 所以现在我有一个2 x 5的随机数数组和2 x 5的索引。我已经阅读了约10次帮助,但显然我的

  • 问题内容: 在Java中,我的数组中有一个数据,如下所示 我想根据第一列对其进行排序,所以我的最终数据可以像这样 第一列是格式为“ yyyy.MM.dd HH:mm”的日期,第二列是字符串。 问题答案: 根据一列 对二维数组进行排序第一列是日期格式为“ yyyy.MM.dd HH:mm”的日期,第二列是字符串。 因为您说的是二维数组,所以我假设“格式日期…”表示字符串。这是用于对String []

  • 我试图在不使用预定义方法或数组列表的情况下对2d数组进行排序。 我想把这个定为 我尝试了很多方法,成功地订购了第一个元素,但添加第二个元素没有成功。我不张贴我的工作,因为它是不成功的任何建议将不胜感激

  • 尝试编写一个Python函数:def compare_lengths(x,y,z) 它接受三个数组作为参数,检查它们的长度,并按长度顺序将它们作为三个数组返回。 例如,如果函数接受[1,2,3]、[10,20,30,40]和[65,32,7]作为输入,则希望它返回([1,2,3]、[65,32,7]、[10,20,30,40])或([65,32,7]、[1,2,3]、[10,20,30,40])