按降序对字符串数组进行排序

时间:2014-06-23 01:55:07

标签: ruby arrays sorting

假设我想按降序排序Ruby中的字符串数组。例如:

books = ["Charlie and the Chocolate Factory", "War and Peace", "Utopia", "A Brief History of Time", "A Wrinkle in Time"]

我目前正在通过Code Academy的Ruby课程,他们说使用以下代码来实现这一目标:

books.sort! { |firstBook, secondBook| secondBook <=> firstBook }

但是,这也不能通过简单地写下来来完成吗?

books.sort!.reverse

他们都在Code Academy课程中产生了相同的结果,但我想知道两者之间是否存在差异。

3 个答案:

答案 0 :(得分:4)

两者之间存在轻微的性能差异

这只是排序的一步

books.sort! { |firstBook, secondBook| secondBook <=> firstBook }

这个实际上包含两个步骤:排序和反向

books.sort!.reverse

因此,当数据很大时,首选的是第一个。但是,在正常情况下,第二个会更容易编写,而性能上的细微差别并不重要。

答案 1 :(得分:1)

我认为该教程只是试图帮助您理解&lt; =&gt; (太空飞船运营商)以及排序如何受变量顺序的影响。 books.sort!.reverse是你会更常用的东西。

答案 2 :(得分:0)

尝试使用以下选项:

1. books.sort!{ |firstBook, secondBook| secondBook <=> firstBook }

2. books.sort{ |firstBook, secondBook| firstBook <=> secondBook  }

3. books.sort_by{ |Book| Book}.reverse