【发布时间】:2015-08-16 01:04:12
【问题描述】:
我有两个int[] 数组I 和J 如下:
int[] I = { 1, 2, 4, 5, 3 };
int[] J = { 8, 7, 6, 3, 2 };
我想对I 进行排序,然后使用相同的索引重新排列J,以便两个数组保持注册状态。结果应该是:
I = { 1, 2, 3, 4, 5 };
J = { 8, 7, 2, 6, 3 };
【问题讨论】:
-
您想对
I进行排序,然后使用排序后的I的相同索引结果重新排列J -
是的,没错。在 Matlab 中你会这样做: [sortedA idx] = sort(A); B(idx)
-
简单答案:定义一个有两个整数的类。一个是来自
I的值,另一个可以是来自J的相应值,也可以是索引本身(0、1、...4)。要么会工作。为简单地比较来自I的值的类定义一个比较器。然后使用该比较器进行排序,来自J的值或索引将与来自I的值保持在一起。这就是您可以使用 Java 的内置sort来做到这一点的方法(而不是 Elliott 的回答,要求您编写自己的排序算法)。 -
感谢所有回复,非常有帮助!