【问题标题】:Get indices for sorted permutation of an array in Ruby?获取Ruby中数组排序排列的索引?
【发布时间】:2013-07-24 08:19:06
【问题描述】:

假设我有一个数组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] 不正确)。

【问题讨论】:

    标签: ruby arrays sorting enumerable


    【解决方案1】:
    ary.each_index.sort_by{|i| ary[i]}
    # => [4, 0, 1, 3, 5, 2]
    

    【讨论】:

    • 那很快。谢谢!
    • to_a 可以删除。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 2010-10-31
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多