对具有3列的2d数组进行排序



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

例如

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("进入相应的流程:");int pros=扫描.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)); `

您可以使用自定义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]]

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

相关内容

  • 没有找到相关文章

最新更新