如何排序2D阵列?

时间:2019-08-02 21:03:07

标签: java sorting

我想仅使用第一个数字以Z字形顺序对2D数组进行排序。例如:

int[][] a = {{2,5,4}{5,3,5}{56,5,54}{353,35}}
sort(a)
System.out.println(a)

我要打印的是((2,5,4),(56,5,54),(5,3,5),(353,35))。有没有办法以O(n)的时间复杂度来做到这一点?

这不是重复项,因为我希望在O(n)中使用它。

1 个答案:

答案 0 :(得分:1)

您可以实现自定义比较器,并按如下所示使用Arrays.sort方法:

int[][] original = new int[][]{{2,2},{1,1},{4,4},{3,3}};
Arrays.sort(original, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o1[0], o2[0]);
    }
});
System.out.println(Arrays.deepToString(original)); //[[1, 1], [2, 2], [3, 3], [4, 4]]