gpt4 book ai didi

java - 使用数组数组中的字典顺序比较两个数组(java)

转载 作者:行者123 更新时间:2023-11-30 08:23:08 25 4
gpt4 key购买 nike

请耐心等待,因为这需要一点解释

我有一个数组数组,我需要对它们进行排序,就好像它们是最低数组的单词(字典排序/字典顺序)

例如 [[1,36,0,0], [1,0,2,5], [3,0,7,1], [5,0,10,7]]

查找最低值应返回第二个数组 [1,0,2,5],因为每个数组的第一个索引中的 1 小于 3 或 5,并且在第一个数组和第二个数组之间进行比较时 0 小于 36在每个数组的第二个元素(理论上这当然可以到最后一个元素并且数组可以相等)

我尝试通过遍历元素将它们构建为字符串(因此第 1 行是 13600,第 2 行是 3025,第 3 行是 3071,第 4 行是 50107)但是这种方法使得找到最低的那个是不正确的处理具有 2 个或更多数字的元素

我想不出比为每个元素设置多个“找到的最低值”计数器变量更好的方法了。有人在这里有任何指导吗?如果可能的话,请在中级水平(ty)上进行解释。

另外:索引需要保持不变,所以我不能使用 .sort(如果它能工作的话)

最佳答案

从根本上说,您需要单独比较条目:

Arrays.sort(data, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
int index, aentry, bentry;
index = 0;
while (index < a.length && index < b.length) {
aentry = a[index];
bentry = b[index];
if (aentry < bentry) {
return -1;
}
if (aentry > bentry) {
return 1;
}
++index;
}
if (a.length < b.length) {
return -1;
}
if (a.length > b.length) {
return 1;
}
return 0;
}
});

(对于 Java8,您可以使用 lambda 来做到这一点。)

如果您不希望索引发生变化,则必须在对数组进行就地排序时进行调整。

关于java - 使用数组数组中的字典顺序比较两个数组(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907134/

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