按列对数组进行排序,就像我想在这里对最后一行的值进行排序一样,根据排序的不同,其他列上的数字可能也会在同一行中发生变化
例如
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];
}