【问题标题】:When sorting row, how to swap columns along in multidimensional-array?对行进行排序时,如何在多维数组中交换列?
【发布时间】:2017-04-02 20:30:29
【问题描述】:

我有一个数组[x][y]

4 2 0 3 1 
t o b e o 
r n o t t 
o b e x x 

如何仅对 for 行进行排序,但将列与行一起移动。 结果必须是

0 1 2 3 4
b o o e t
o t n t r
e x b x o

我试过了

for (char[] innerArray : grid) {
    Arrays.sort(innerArray);
}

但它对所有行进行排序。

【问题讨论】:

标签: java sorting multidimensional-array


【解决方案1】:

这是您的问题的解决方案。这个算法完全可以做到你上面提到的。

Integer[][] arr = new Integer[4][4];
        arr[0][0] = 4;
        arr[0][1] = 3;
        arr[0][2] = 1;
        arr[0][3] = 2;

        arr[1][0] = 6;
        arr[1][1] = 4;
        arr[1][2] = 9;
        arr[1][3] = 2;

        arr[2][0] = 9;
        arr[2][1] = 7;
        arr[2][2] = 5;
        arr[2][3] = 4;

        arr[3][0] = 11;
        arr[3][1] = 33;
        arr[3][2] = 6;
        arr[3][3] = 8;

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

为了测试目的打印出数组。

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[0].length; j++) {
        if (arr[i][j] > 9) {
            System.out.print(arr[i][j]+"  ");
        }else{
            System.out.print(arr[i][j]+"   ");
        }
    }
    System.out.println();
}

这是上述的一个例子。

排序前

4   3   1   2   
6   4   9   2   
9   7   5   4   
11  33  6   8

排序后

1   2   3   4   
9   2   4   6   
5   4   7   9   
6   8   33  11

我希望这个解决方案能满足您的要求。

【讨论】:

  • 简单直接,尽管效率低下。非常好!
猜你喜欢
  • 2014-05-13
  • 2013-12-09
  • 2017-07-03
  • 2011-08-31
  • 1970-01-01
  • 2011-03-15
  • 2019-06-18
  • 2014-01-19
相关资源
最近更新 更多