你能用Ruby优化这个降序排序数组吗?

时间:2012-11-29 23:35:12

标签: ruby arrays sorting

您是否了解更好,更快,更智能,更高效或更优雅的方式来执行以下操作?

由于这个数组

a = [171, 209, 3808, "723", "288", "6", "5", 27, "22", 207, 473, "256", 67, 1536] 

得到这个

a.map{|i|i.to_i}.sort{|a,b|b<=>a}
 => [3808, 1536, 723, 473, 288, 256, 209, 207, 171, 67, 27, 22, 6, 5]

2 个答案:

答案 0 :(得分:2)

您可以使用就地突变来避免创建新数组:

a.map!(&:to_i).sort!.reverse!

如果没有基准测试,很难知道它是否更快或更有效。

答案 1 :(得分:2)

这是使用symbol#to_proc

的人
a.map(&:to_i).sort.reverse

这比使用就地修饰符(!)方法更快但使用更多内存。作为奖励,如果你想用它做任何其他事情,它会保持原始数组a完整。