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

标签 ruby arrays sorting enumerable

假设我有一个数组 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]

关于ruby - 获取 Ruby 中数组排序排列的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841086/

相关文章:

c++ - 当通过交换行和列在双数组中设置值时,得到两个单元格值。为什么?

javascript - 通过 POST 发送一个 JavaScript 对象数组

java - 执行返回键而不是就地排序的搜索的技术

Ruby 在与源相同的目录中加载配置(yaml)文件

ruby-on-rails - ActionMailer 错误的参数数量错误

Python 按另一个位置数组排序数组

使用交换函数和指针的 C++ 冒泡排序

java - QuickHull 算法的复杂性?

ruby - Ruby 生态系统中 Semver 的替代方案

ruby-on-rails - 服务器已经在运行。检查 C :/Rails/tmp/pids/server. pid