我如何进行稳定排序?

7

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

示例:

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

Looking for

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

示例输入和输出 - Arup Rakshit
1个回答

6
把你最初想要排序的关键字和索引放入数组中,然后按照它们进行排序。
a.sort_by.with_index { |(x, y), i| [y, i] }
  # => [[:a, 0], [:c, 0], [:d, 0], [:b, 1]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接