如何稳定排序数组?我想要排序的值可能有很多重复,我不确定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]]
答案 0 :(得分:4)
将您最初想要排序的密钥和索引放入数组中,然后按此排序。
a.sort_by.with_index { |(x, y), i| [y, i] }
# => [[:a, 0], [:c, 0], [:d, 0], [:b, 1]]