JAVA:我需要按降序对数组中的一系列进行排序

标签 java arrays

所有方法都不能解决一个问题。我可以按增长顺序调整最后一行的大小。但我不明白如何做相反的事情。我需要数组的最后一行按降序排序(从最大到最小)

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/

相关文章:

java - 如何在没有显式转换的情况下对返回泛型类型的方法使用 lambdaJ 的 extract()

C# 使用大型多维(非锯齿状)字节数组执行文件 I/O 的简单方法

java - 从任意位置加载自定义类

java - 如何在 HTML 中创建\n新行

python - 在 numpy 数组中对 1 的 block 进行排名的快速、python 风格的方法?

sql - 为什么查询的数据以结果集的形式返回,而不是以数组的形式返回?

java - 我想找到java数组中所有元素的频率?

arrays - 如何在lua中循环遍历二维数组

java - 我们可以在存储库层中使用一个 XA 资源和两个非 XA 资源吗

java - JTable resize table header 自动滚动