【问题标题】:How do I do stable sort?如何进行稳定排序?
【发布时间】:2014-02-21 06:34:25
【问题描述】:

如何稳定地对数组进行排序?我要排序的值可能有很多重复项,我不确定 ruby​​ 使用哪种排序算法。我认为插入排序对我来说效果最好。

例子:

a = [[:a, 0], [:b, 1], [:c, 0], [:d, 0]]
a.sort_by { |x, y| y }  # => [[:a, 0], [:d, 0], [:c, 0], [:b, 1]]

寻找

[[:a, 0], [:c, 0], [:d, 0], [:b, 1]]

【问题讨论】:

  • 输入输出示例

标签: ruby sorting stable-sort


【解决方案1】:

将您最初想要排序的键和索引放入一个数组中,然后按此排序。

a.sort_by.with_index { |(x, y), i| [y, i] }
  # => [[:a, 0], [:c, 0], [:d, 0], [:b, 1]]

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2017-05-30
    相关资源
    最近更新 更多