【问题标题】:Sort an array of string in descending order按降序对字符串数组进行排序
【发布时间】:2014-06-23 01:55:07
【问题描述】:

假设我想在 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 课程中都产生了相同的结果,但我想知道两者之间是否有什么区别。

【问题讨论】:

标签: ruby arrays sorting


【解决方案1】:

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

这只是一个步骤

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

这个其实包含两个步骤:排序和逆向

books.sort!.reverse

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

【讨论】:

  • 很高兴知道。谢谢!
【解决方案2】:

我认为本教程只是想帮助您理解 (宇宙飞船运算符)以及变量顺序如何影响排序。 books.sort!.reverse 是您更常用的东西。

【讨论】:

  • 好的。我想这是有道理的。我想也许这是不好的形式或不允许的。谢谢!
  • 如果您喜欢 codeacademy 上的 ruby​​ 课程,您可能会喜欢 codeschool 的 tryruby.org 或“硬着头皮学习 ruby​​”。我发现这些对于 ruby​​ 来说是一个更好的入门课程,对事情的工作方式有更多的解释。
  • 我现在实际上正在浏览几个网站。我会看看你的建议
【解决方案3】:

尝试以下选项:

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

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

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

【讨论】:

  • 您不应该在不回答问题(这是关于两个命令之间的区别)的情况下挖掘旧帖子(已接受答案)。
  • 对不起,你是对的,我只是想帮忙。问候!
猜你喜欢
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2017-03-04
  • 2021-12-28
  • 1970-01-01
  • 2014-02-16
  • 2013-06-05
相关资源
最近更新 更多