我有一系列
double[] weights = { 32.0, 32.0, 25.0, 25.0, 30.0, 28.0,
12.0, 10.0, 8.0, 8.0, 18.0, 0.0 };
我想根据
0
的降序排列其对应的索引11
至weights
:{ 32.0, 32.0, 30.0, 28.0, 25.0, 25.0, 18.0, 12.0, 10.0, 8.0, 8.0, 0.0 }
在这种情况下,我想要的输出将是
int[]
:{ 0, 1, 4, 5, 2, 3, 10, 6, 7, 8, 9, 11 }
我添加了一个int []值来跟踪索引:
int[] values = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }
最佳答案
像这样制作一个可比较的容器类
class EvanContainer implements Comparable<EvanContainer> {
double weight;
int value;
EvanContainer(double w, int v) { weight = w; value = v; }
public int compareTo(EvanContainer other) {
return Double.compare(weight, other.weight);
}
}
然后,您可以像平常一样对它进行排序。
EvanContainer[] container = new EvanContainer[weights.length];
for(int i = 0; i < weights.length; i++) {
container[i] = new EvanContainer(weights[i],values[i]);
}
Arrays.sort(container);
关于java - 通过double []数组对int []数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8378831/