我想根据两个数组匹配索引的比率对它们进行排序。因此根据a[x]/b[x]的比率,a[]和b[]被相应地排序。这是基本结构:
double[] a = {60.0, 100.0, 120.0};
double[] b = {20.0, 50.0, 30.0};
r0 = a[0]/b[0]
r1 = a[1]/b[1]
r2 = a[2]/b[2]
...
我正在编写的 Java 代码无法运行。有人可以给我一些帮助吗?
Arrays.sort(ratio, new Comparator<double[]>() {
@Override
public double compare(double[] a, double[] b) {
double r1 = (double)a[i]/b[i];
double r2 = (double)a[i+1]/b[i+1];
return r1 > r2;
}
});
最佳答案
您可以像这样声明一个Pair
:
static class Pair {
double a;
double b;
Pair(double a, double b) {
this.a = a;
this.b = b;
}
}
并将数组放入数组对中。然后很容易对它们进行排序:
Pair[] p = new Pair[a.length];
for (int i = 0; i < p.length; i++)
p[i] = new Pair(a[i], b[i]);
Arrays.sort(p, (p1, p2) -> Double.compare(p1.a/p1.b, p2.a/p2.b));
当然,结果在新数组中。如果需要,您可以循环并将它们放回 a
和 b
。
关于java - Java中如何根据比率对两个数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685116/