繁体   English   中英

在Ruby中获取数组排序排列的索引?

[英]Get indices for sorted permutation of an array in Ruby?

假设我有一个数组ary = [0.0, 1.0, 5.0, 1.0, -2.0, 3.5] ,我想要输出另一个相同大小的数组,其中包含按值排序的ary索引。 换句话说,输出应为[4,0,1,3,5,2] 使用EnumerableArray有一种有效的方法吗?

我能想象到的最简单的解决方案如下:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM