java - 对行进行排序时,如何在多维数组中交换列?

标签 java sorting multidimensional-array

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

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

如何仅对行进行排序,但随行移动列。 结果必须是

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

但它对所有行进行排序。

最佳答案

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

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

To print out the Array for testing purpose .

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

This is an exemple of the above.

排序前

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

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

关于java - 对行进行排序时,如何在多维数组中交换列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43173212/

相关文章:

java - 将 json 时间戳转换为普通 java 时间戳

java程序统计以大写字母开头的单词个数

php - 在 php 中使用 opendir() 按字母顺序排序和显示目录列表

java - 在数组中搜索字符串

PHP最好的MD5多维数组方法?

java - 构造函数未初始化 Scanner 对象

java - 如何借助Nutshell Api进行基于自定义字段的搜索?

c# - 有没有一种简单的方法可以按字母顺序对字符串中的字符进行排序

powershell - 正确排序包含版本号的列表

c - 遍历 C 中的多个数组