RubyArray#bsearch
假设一个排序数组,接受一个返回 true/false 的块,并使用二进制搜索来查找块返回 true 的第一个元素。例如:
ary = [0, 4, 7, 10, 12]
ary.bsearch {|x| x >= 4 } #=> 4
我想要一个也使用二进制搜索的版本,但返回找到的值的索引,而不是值本身。在上面的示例中,它将返回1
.
我找不到任何这样的内置方法——有吗?如果没有,我可以使用任何其他内置函数来实现这一点吗?或者,ruby 是否有任何支持搜索和及时插入的内置结构n log n
?