【发布时间】:2016-12-10 11:44:30
【问题描述】:
我有一个方法可以搜索排序数组中第一次出现的数字并返回该数字的索引。
def binary_search_sorted(sorted_array, n)
first = 0
array.bsearch do |x|
if x <= n
first = array.find_index(n)
break
else
first = -1
end
end
p first
end
binary_search_sorted([1,1,2,3,4,4,5,5,5,5,9], 5)
上面将返回 6,因为 5 的第一次出现在索引 6 处
这是正确使用 bsearch 吗?这种方法的幕后实际发生了什么。如何改进方法?
【问题讨论】:
-
如果
arr = [1,1,2,3,4,4,5,5,5,5,9]你也可以arr.bsearch_index { |i| i == 5 } #=> 6
标签: ruby binary-search