5
私は配列ary = [0.0, 1.0, 5.0, 1.0, -2.0, 3.5]
を持っていて、ary
のインデックスをソート順に並べた同じサイズの別の配列を出力として出力したいとします。つまり、出力は[4,0,1,3,5,2]
である必要があります。 Enumerable
またはArray
でこれを行う効率的な方法はありますか?Rubyで並べ替えられた配列のインデックスを取得しますか?
次のように、私が想像できる最も自明な解は次のようになります。
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]
は正しくありません)。
速いです。ありがとう! –
「to_a」を削除することができます。 :) – Santhosh