[英]Sorting 2d array with 3 columns
像我在這里想要做的那樣,按列對數組進行排序是對我的值進行最后一行的排序,並且根據排序的方式,同一行中其他列的數字也可能會更改
例如
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(“ Entr la cantidad de procesos que quiere correr:”); 優點= 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)); `
您可以使用自定義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];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.