J'ai une méthode qui va chercher la première apparition d'un nombre dans un tableau trié et retourner l'indice de ce nombre.bsearch optimisation dans ruby
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)
Le plus va revenir 6 parce que la première apparition de 5 est à l'indice 6
Est-ce l'utilisation correcte de bsearch? Qu'est-ce qui se passe réellement sous le capot de cette méthode. Comment pourrais-je améliorer la méthode?
Si 'arr = [1,1,2,3,4,4,5,5,5,5,9]' vous pouvez aussi faire 'arr.bsearch_index {| i | i == 5} # => 6' –