java - Java中如何根据比率对两个数组进行排序?

标签 java arrays sorting interface

我想根据两个数组匹配索引的比率对它们进行排序。因此根据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));

当然,结果在新数组中。如果需要,您可以循环并将它们放回 ab

关于java - Java中如何根据比率对两个数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685116/

相关文章:

java - mySQL中触发器和手动插入的ram进程有什么不同

java - 如何在java正则表达式中对两个字符进行分组?

java - Struts 和 AJAX 的问题

arrays - 我有十个按钮,我需要知道用户选择了哪个按钮并将该信息保存到用户配置文件中

sorting - 两遍多路归并排序?

java - 可以采用数组和数组列表的通用方法

java - 如何将科学运算符 E 与变量一起使用?

javascript - 使用 javascript 填充时的字段计数

php - mysql 对发送和接收的消息进行排序

Java:检查两个数组是否包含相同的元素而不进行任何导入