首页 / JAVA / 排序2维java数组
排序2维java数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了排序2维java数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1563字,纯文字阅读大概需要3分钟。
内容图文
我已经实现了冒泡排序来对二维java long [] []进行排序
但我的上帝很慢,我将需要禁食算法
我将生成一个最大堆大小的数组jvm将允许我,
所以我认为最好和最快的方法是使用inbuild java Arrays.sort
我不介意它是否只能排在第一列,因为我可以改变我的程序以适应,
我遇到过这个,但我不熟悉comaparator,
这将允许我对一个整数的维数排序,有没有人知道如何改变它以允许多头?,我做了思想家周围没有喜悦.
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();
}
}
}
或者您可以使用泛型来避免强制转换:
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;
}
}
内容总结
以上是互联网集市为您收集整理的排序2维java数组全部内容,希望文章能够帮你解决排序2维java数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。