TheAlgorithms-Ruby/searches/binary_search.rb

30 lines
623 B
Ruby

# Searches through a list for a value in O(log(n)) time.
# The list must be sorted.
def binary_search(array, key)
front = 0
back = array.length - 1
while front <= back
middle = (front + back) / 2
return middle if array[middle] == key
if key < array[middle]
back = middle - 1
else
front = middle + 1
end
end
nil
end
puts "Enter a sorted space-separated list:"
arr = gets.chomp.split(' ').map(&:to_i)
puts "Enter the value to be searched:"
value = gets.chomp.to_i
puts if binary_search(arr, value) != nil
"Found at index #{binary_search(arr, value)}"
else
"Not found"
end