我想仅使用第一个数字以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)中使用它。
答案 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]]