【发布时间】:2012-10-01 05:22:45
【问题描述】:
我有一个双精度数组,用 Java 编写:arr1,我想对其进行排序。第一个选项很可能是实用方法Arrays.sort(double[])。
我的想法是我希望将相同的更改(例如,index i 的值与arr1 中的index j 的值互换)反映在另一个整数数组中:arr2(从某种意义上说相同索引处的值也在arr2 中更改)。
有没有一种简单的方法(技巧)可以在 Java 中实现这一点?还是只能自己实现排序算法?
更新:我看到人们建议用一个包含两个值的对象数组替换两个数组(一个来自arr1,一个来自arr2)。这不会带来一些效率损失。换句话说,对对象数组进行排序不是比对原始类型数组(在本例中为双精度类型)效率低吗?
数据是完全静态的。它很大(适合内存)但是是静态的。
【问题讨论】:
-
有一个索引数组。不要对值数组进行排序,对索引数组进行排序。然后使用索引数组指向两个值数组。解决方法见:stackoverflow.com/questions/4859261/…
-
这就是所谓的“外部排序”。
-
解决您的编辑问题:排序可能效率较低(需要确定指标),但您将通过不必对 2 个数组进行排序或在期间进行复杂的索引映射来提高效率值查找。