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