Ruby #index方法VS二进制搜索

Ter*_* Li 5 ruby indexing binary-search

给定一个元素和一个数组,Ruby #index方法返回数组中元素的位置.我使用二进制搜索实现了自己的索引方法,期望我的索引方法优于内置索引方法.令我惊讶的是,内置的一个在实验中的速度大约是我的三倍.

任何Rubyist都知道原因吗?

wer*_*mon 11

内置#index不是二进制搜索,它只是一个简单的迭代搜索.但是,它是用C而不是Ruby实现的,所以自然它可以快几个数量级.

  • 二进制搜索还需要一个排序数组,即O(n log n) - 所以如果#index"知道"它被调用足够多次,那么值得做,但不是一般情况下. (3认同)