java根据两个数组的值对数组进行排序
我目前有两个阵列,电源和能源:
int[] power = [20, 10, 50, 10, 30, 5];
powerIndex 0 1 2 3 4 5
int[] energy = [20, 5, 15, 3, 10, 30];
energyIndex 0 1 2 3 4 5
我想得到一个数组,其中幂数组的索引被排序(从低到高),如果幂数相同,那么使用较少能量的幂应该得到第一个点。所以基本上我想要的结果是:
int[] result = [5, 3, 1, 0, 4, 2]
这是我目前的代码:
int[] result = new int[power.length];
int answerIndex = 0;
int tempSmallest = Integer.MAX_VALUE;
int lastNumberSaved = 0;
int posWithSmallerPower = 0;
while (answerIndex < power.length) {
for (int i = 0; i < power.length; i++) {
int current = power[i];
if (tempSmallest > current && current > lastNumberSaved) {
tempSmallest = current;
posWithSmallerPower = i;
}
if (tempSmallest >= current && current > lastNumberSaved) {
if (current != lastNumberSaved && energy[posWithSmallerPower] > energy[i]) {
tempSmallest = current;
posWithSmallerPower = i;
}
}
}
answer[answerIndex] = posWithSmallerPower;
answerIndex++;
lastNumberSaved = tempSmallest;
tempSmallest = Integer.MAX_VALUE;
}
return answer;
我得到的:[5,3,0,4,2,2]。 再说一遍,我应该得到的:[5,3,1,0,4,2]
我在处理相同数字的异能时遇到了麻烦。我确实在第二个数组中比较了它们的能量,实际上我首先得到了索引3中的幂,但是代码完全忽略了同样有相同数字(10)的第二个幂
我如何做到这一点?谢谢!
# 1 楼答案
在
list.sort()
中使用内联Comparator<T>
来比较两个powerEnergyIndex哪个输出
5 3 1 0 4 2
# 2 楼答案
对于实现
Comparable
接口的临时数据结构来说,这似乎是一个很好的用例。{a1}解释了这是如何很好地工作的,但这是一个例子:哪些输出: