【发布时间】:2017-01-18 20:11:45
【问题描述】:
以下代码按升序返回一个排序好的数组:
books = ["Charlie and the Chocolate Factory", "War and Peace", "Utopia", "A Brief History of Time", "A Wrinkle in Time"]
# To sort our books in ascending order, in-place
books.sort! { |firstBook, secondBook| firstBook <=> secondBook }
这是如何工作的?
首先比较两个对象,然后返回 0、1 或 -1。
但是sort怎么知道排序呢?
【问题讨论】:
-
为什么您认为比较不会返回
0、1或-1?"War and Peace" <=> "Utopia"例如返回1。 -
您的问题能否更具体一点?您是否在问 Ruby 使用哪种排序算法对对象进行重新排序?您想知道该算法是如何工作的吗?您是在问 Ruby 是如何确定对象 A 应该在对象 B 之前出现的吗?还是您在问如何使用 Array.sort 方法?在引擎盖下,排序不是一项简单的操作。有很多可以解释的。