【问题标题】:Sorting 2d array with 3 columns对 3 列的二维数组进行排序
【发布时间】:2015-04-07 05:31:09
【问题描述】:

按列对数组进行排序,就像我在这里想要做的是将我的值排序在我的最后一行,并且取决于对其他列上的数字排序可能在同一行中也发生变化

例如

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 cantidad de procesos que quiere correr:"); int 优点 = 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)); `

【问题讨论】:

  • 您能分享一下您到目前为止所尝试的内容吗?您至少需要半路来,以便我们为您提供帮助。
  • 我找到了,但我尝试实现但没有工作 myArr.sort(function (a, b) { return a[2] - b[2]; });
  • 您能帮我解决您想要的排序算法吗?根据您的输入和输出,我无法做出任何逻辑
  • 对数组的最后一列进行排序,两列的值与排好序的列一致

标签: java arrays sorting compare


【解决方案1】:

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

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

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

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

例如:

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]]

【讨论】:

  • a1 或 a2 是什么?
  • @IfrahimHernandez 只是代表我们正在比较的两个 int[] 数组的变量。
  • 我从哪里得到比较器
  • 您需要创建比较器,如示例所示。尝试运行它。
【解决方案2】:

让我们构造一个长度与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];
}

【讨论】:

  • 我的数组是二维的,可在 3 列上排序
  • 糟糕...误解了你的问题!
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 2015-09-17
  • 2018-03-08
  • 2022-01-02
  • 2021-02-03
  • 2021-12-13
相关资源
最近更新 更多