【问题标题】:Sorting 2D Int Array in Java without comparator using helper methods使用辅助方法在没有比较器的情况下对 Java 中的 2D Int 数组进行排序
【发布时间】:2018-03-27 00:27:53
【问题描述】:

我被困在一个作业上,我应该使用辅助方法对 Java 中的 2D int 数组中的行和列进行排序。明确要求使用两种不同的方法对数组进行排序。无论如何,这是我对行进行排序的代码

public static void sortOneRow(int[] arr1) {

 int temp;
    for (int i = 0; i < arr1.length; i++) {
        for (int j = i + 1; j < arr1.length; j++) {
            if (arr1[i] > arr1[j]) {
                temp = arr1[i];
                arr1[i] = arr1[j];
                arr1[j] = temp;
            }
        }
    }

如果给定一个代表二维数组和列索引的输入参数,这里是对列进行排序:

  public static void sortOneColumn(int[][] x, int colNo) {
    // Sorting one column
    int[] thisCol = new int[x.length];
    for (int i = 0; i < x.length; i++) {
        thisCol[i] = x[i][colNo];
    }

    // Sort 

    sortOneRow(thisCol);
    for (int i = 0; i < x.length; i++) {
        x[i][colNo] = thisCol[i];
    }

现在,我如何在另一个只接受二维数组的方法中调用这两个方法,并且我必须先对行进行排序,然后对列进行排序?

【问题讨论】:

  • 为什么您的 sortOneRow 不等同于 sortOneColumn 之一?在这两种情况下,它都是一个二维数组,对吧?
  • 你不能也使用 Arrays.sort 方法吗?
  • @Adya 不,不能用那个
  • @JorgeCampos 按照说明,我必须创建不同的方法来对行和列进行排序,然后使用这些方法中的每一个对 2D 矩阵进行排序

标签: java arrays sorting multidimensional-array methods


【解决方案1】:

如果我理解正确,您想重用自己的方法来对二维数组进行排序。希望这可以帮助:

public static void sort(int[][] a){
   if(a == null || a.length == 0) return;

   for(int row = 0; row < a.length; row++) {
     sortOneRow(a[row]);
   }

   for(int col = 0; col < a[0].length; col++) {
     sortOneColumneRow(a, col);
   }
}

【讨论】:

  • 是的,这是完美的。谢谢!
  • @samdukez 谢谢,如果是这样,请您接受我的回答以标记您的问题已解决:) 谢谢
  • 嘿,抱歉,我使用的是新帐户,我试图接受答案,但它告诉我需要 15 个声望点。
猜你喜欢
  • 2016-12-25
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
相关资源
最近更新 更多