对二维矩阵列和行进行排序

时间:2017-02-26 11:50:03

标签: java sorting matrix

-1 -3 -2        -3 -2 -1
 2  3 -2        -2  2  3 
 5  7  4         4  5  7 
(Orignal)        (Sorted)

我可以仅基于行OR列对矩阵进行排序。 但考虑到列和行,我无法获得排序矩阵的最佳解决方案。

有任何建议如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以将任何2D数组转换为1D数组,并且这些数组很容易排序。

您不必实际更改2D数组,只需使用索引:

let videoUrl = Bundle.main.url(forResource: "videos/video", withExtension: "mp4")!
let videoPlayer = AVPlayer(url: videoUrl)

答案 1 :(得分:0)

使用这两个功能:

public static void sortRows(int[][] matrix){
    for (int i = 0; i < matrix.length; i++) {
        Arrays.sort(matrix[i]);
    }
}

public static void transpose(int[][] matrix){
    for (int i = 0; i < matrix.length; i++) {
        for (int j = i; j < matrix[0].length; j++) {
            int tmp1 = matrix[i][j];
            int tmp2 = matrix[j][i];
            matrix[j][i] = tmp1;
            matrix[i][j] = tmp2;
        }
    }
}

您可以对行进行排序,转置矩阵,再次对行进行排序(转置列)并将其转置回来:

int[][] matrix = {{-1, -3, -2}, {2,  3, -2}, {5, 7,  -4}};
sortRows(matrix);
transpose(matrix);
sortRows(matrix);
transpose(matrix);