【发布时间】:2020-03-29 22:42:19
【问题描述】:
我目前有2个阵列,电源和能量:
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) 的第二幂。
我如何实现这一目标?谢谢!
【问题讨论】:
-
似乎是大学作业。您的代码没有问题。你需要思考你想要达到的目标。在一张纸上画出草图,然后开始编码。
-
@brainless-coder 谢谢!我在大约 5-6 小时后才发了这篇文章。我完全拒绝寻求帮助,直到我真的厌倦了尝试无数的“解决方案”,这些“解决方案”似乎让我更加远离结果。我很感激你的意图,和平!
标签: java arrays sorting indexing