Ruby 中 sort 和 sort_by 方法的用法?

· 约 3 分钟读完 · 第 112 / 199 章

推荐答案

在 Ruby 中,sort 和 sort_by 是用于对数组进行排序的两种常用方法。

sort 方法

sort 方法用于对数组中的元素进行排序。默认情况下,它使用 <=> 操作符进行比较,返回一个新的已排序数组。

你也可以传递一个块给 sort 方法,自定义排序逻辑:

sort_by 方法

sort_by 方法允许你根据某个特定的属性或计算值对数组进行排序。它接受一个块,块中的表达式将用于排序。

sort_by 通常比 sort 更高效,因为它只需要计算一次排序键,而不是在每次比较时都计算。

本题详细解读

sort 方法详解

  • sort 方法默认使用 <=> 操作符进行比较,该操作符返回 -1、0 或 1,分别表示小于、等于或大于。
  • 你可以通过传递一个块来定义自定义的排序逻辑。块应该返回 -1、0 或 1,类似于 <=> 操作符的行为。
  • sort 方法的时间复杂度通常为 O(n log n),具体取决于底层实现。

sort_by 方法详解

  • sort_by 方法通过计算每个元素的排序键来进行排序。排序键可以是元素的某个属性,或者通过块中的表达式计算得出的值。
  • sort_by 方法的时间复杂度也是 O(n log n),但由于它只需要计算一次排序键,因此在某些情况下比 sort 更高效。
  • sort_by 方法特别适用于需要对复杂对象进行排序的场景,例如根据对象的某个属性进行排序。

选择 sort 还是 sort_by

  • 如果你需要对数组进行简单的排序,或者排序逻辑较为复杂,可以使用 sort。
  • 如果你需要根据某个特定的属性或计算值进行排序,sort_by 通常是更好的选择,因为它更简洁且高效。

示例对比

通过这两个示例,你可以看到 sort 和 sort_by 在不同场景下的应用。