0
我有一個方法,將搜索排序數組中的數字的第一次出現,並返回該數字的索引。紅寶石bsearch優化
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 |我== 5}#=> 6' –