gpt4 book ai didi

java - 排序二维java数组

转载 作者:行者123 更新时间:2023-12-04 06:40:08 25 4
gpt4 key购买 nike

我已经实现了冒泡排序来对二维 java long [][] 进行排序
但我的上帝是不是很慢,我将需要可能的禁食算法
我将生成一个最大堆大小的数组 jvm 将允许我,

所以我认为最好和最快的方法是使用内置 java Arrays.sort

我不介意它是否只能在第一列排序,因为我可以更改我的程序以适应,
我遇到了这个,但我不熟悉comaparator,

这将允许我对整数的维度数组进行排序,有没有人知道如何更改它以允许 longs?,我还没有快乐地思考它。

int d2 [][] = {{1,43},{26,98},{44,398},{11,34},{17,32}};

java.util.Arrays.sort(d2, new java.util.Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return b[0] - a[0];
}
});

我想排序说
long d2L [][] = {{1,43},{26,98},{44,398},{11,34},{17,32}};

类型转换不是一种选择,因为数量庞大

另外,如果有人认为有一种更快的方法可以让我全神贯注:)

最佳答案

这基于 O(NlogN) 中的所有列进行排序,即非常快:

import java.util.*;

class Compare2DArray implements Comparator {
public int compare(Object a, Object b) {
int aa[] = (int[]) a;
int bb[] = (int[]) b;
for (int i = 0; i < aa.length && i < bb.length; i++)
if (aa[i] != bb[i])
return aa[i] - bb[i];
return aa.length - bb.length;
}
}

class sort2d {
public static void main(String args[]) {
int d2 [][] = {{1,43},{26,98},{44,398},{11,34},{17,32}};
Arrays.sort(d2, new Compare2DArray());
for (int i = 0; i < d2.length; i++) {
for (int j = 0; j < d2[i].length; j++)
System.out.print(d2[i][j] + " ");
System.out.println();
}
}
}

http://ideone.com/TjEOL

或者您可以使用泛型来避免强制转换:
class Compare2DArray implements Comparator<int[]> {
public int compare(int a[], int b[]) {
for (int i = 0; i < a.length && i < b.length; i++)
if (a[i] != b[i])
return a[i] - b[i];
return a.length - b.length;
}
}

关于java - 排序二维java数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com