使用辅助方法在没有比较器的Java中对2D Int Array进行排序

时间:2018-03-27 00:27:53

标签: java arrays sorting multidimensional-array methods

我陷入了一项任务,我应该使用辅助方法在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;
            }
        }
    }

如果给定一个表示2D数组和列索引的输入参数,则可以对列进行排序:

  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];
    }

现在,我如何在另一个只占用2D数组的方法中调用这两个方法,我必须首先对行进行排序然后对列进行排序?

1 个答案:

答案 0 :(得分:1)

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

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);
   }
}