所有方法都不能解决一个问题。我可以按增长顺序调整最后一行的大小。但我不明白如何做相反的事情。我需要数组的最后一行按降序排序(从最大到最小)
package com.test.array;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
public class first{
public static void main(String[] args) {
int [][] twoDimArray = {
{3, 5, 9},
{0, 7, 1},
{8, 9, 2},
{1, 4, -8},
{3, -6, 7},
};
printArray(twoDimArray);
System.out.println("******************");
System.out.println("Averege first row: " + Arrays.stream(twoDimArray[0]).average());
Arrays.sort(twoDimArray[twoDimArray.length - 1]);
printArray(twoDimArray);
System.out.println("******************");
}
private static void printArray(int [][] arr) {
for (int [] row : arr)
System.out.println(Arrays.toString(row));
}
}
最佳答案
您可以像以前一样对数组进行排序,然后迭代该数组并将第一个与最后一个交换,第二个与最后一个1交换,等等。如以下代码快照所示:
Arrays.sort(twoDimArray[twoDimArray.length - 1]);
//Swap
for (int i = 0, j = twoDimArray[twoDimArray.length - 1].length - 1, tmp; i < j; i++, j--) {
tmp = twoDimArray[twoDimArray.length - 1][i];
twoDimArray[twoDimArray.length - 1][i] = twoDimArray[twoDimArray.length - 1][j];
twoDimArray[twoDimArray.length - 1][j] = tmp;
}
二维数组最后一行的结果是:
[7, 3, -6]
您可以将twoDimArray[twoDimArray.length-1]
的引用存储到一个数组中,以便代码变得更加清晰:
int [] a = twoDimArray[twoDimArray.length - 1];
Arrays.sort(a);
//Swap
for (int i = 0, j = a.length - 1, tmp; i < j; i++, j--) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
System.out.println(Arrays.toString(twoDimArray[twoDimArray.length - 1]));
如您所见,结果没有改变,因为 a[] 保存了数组的引用 twoDimArray[twoDimArray.length - 1]
关于JAVA:我需要按降序对数组中的一系列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59071976/