簡體   English   中英

用3列對2d數組進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM