问题:考虑以下 float[]:
d[i] = 1.7 -0.3 2.1 0.5
我想要的是一个 int[] 数组,它表示带有索引的原始数组的顺序。
s[i] = 1 3 0 2
d[s[i]] = -0.3 0.5 1.7 2.1
当然,这可以通过自定义比较器、一组经过排序的自定义对象来完成,或者通过简单地对数组进行排序然后在原始数组中搜索索引(不寒而栗)。
我实际上正在寻找的是 Matlab 的排序函数 的第二个返回参数的等价物。
有没有一种简单的方法可以做到这一点( LOC)?可能有一种解决方案不需要为每个元素分配一个新对象吗?
更新:
感谢您的回复。不幸的是,到目前为止所提出的方案都与我所希望的简单有效的解决方案相似。因此,我在 JDK 反馈论坛中开了一个帖子,提议添加一个新的类库函数来解决这个问题。让我们看看 Sun/Oracle 对这个问题的看法。
http://forums.java.net/jive/thread.jspa?threadID=62657&tstart=0
原文由 edgar.holleis 发布,翻译遵循 CC BY-SA 4.0 许可协议
我会定制快速排序算法以同时对多个数组执行交换操作:索引数组和值数组。例如(基于这个 quicksort ):