假设我有一个数组 ary = [0.0, 1.0, 5.0, 1.0, -2.0, 3.5]
,我想输出另一个包含 ary< 的相同大小的数组
的索引按值排序。换句话说,输出应该是 [4,0,1,3,5,2]
。使用 Enumerable
或 Array
是否有一种有效的方法来做到这一点?
我能想到的最简单的解决方案如下:
class Array
def sorted_indices
self.map.with_index{ |v,i| [v,i] }.sort{ |a,b| a[0] <=> b[0] }.map { |v| v[1] }
end
end
但我觉得必须内置一些更简单的东西。
请务必注意,数组中的值不是唯一的。任何索引都不应在结果数组中出现多次(换句话说,[4,0,1,1,5,2]
是不正确的)。
最佳答案
ary.each_index.sort_by{|i| ary[i]}
# => [4, 0, 1, 3, 5, 2]
关于ruby - 获取 Ruby 中数组排序排列的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841086/