【发布时间】:2012-01-30 03:26:55
【问题描述】:
我正在寻找一种内置的 Ruby 方法,它与index 具有相同的功能,但使用二分搜索算法,因此需要一个预排序的数组。
我知道我可以编写自己的实现,但是根据“Ruby#index Method VS Binary Search”,index 使用的内置简单迭代搜索比纯 Ruby 版本的二进制搜索要快,因为内置方法是用C写的。
Ruby 是否提供任何执行二进制搜索的内置方法?
【问题讨论】:
-
无需自己编写:tyler/binary_search。作者还花时间运行了一些基准测试。
-
嗨 sczizzo,我是 ruby 新手,所以这是一个非常新的问题,但是如何将此功能添加到我的 ruby 安装中?只是运行 rakefile 的问题吗?谢谢。
-
可能更容易使用
bsearchgem,正如 Marc-André 所建议的那样。然后它就像命令行中的gem install bsearch和Ruby 中的require 'bsearch'一样简单。你可能想look at the documentation for usage。 -
应该注意的是,即使它是用 ruby 编写的,对于足够大的数组,任何二进制搜索的实现最终都会胜过线性搜索的任何实现,无论如何优化。
标签: ruby binary-search