Add recursive binary search for ruby (ch. 1) and improve recursive max for ruby (ch. 4) (#113)
* add recursive binary search for ruby * account for cases with empty lists and lists with only one item * use p instead of print to show nil value * add newline at end of file
This commit is contained in:
committed by
Aditya Bhargava
parent
6b9faa9cab
commit
4c3bc702f4
@@ -0,0 +1,26 @@
|
||||
def binary_search(list, item, low = 0, high = list.length - 1)
|
||||
while low <= high
|
||||
mid = (low + high) / 2
|
||||
guess = list[mid]
|
||||
|
||||
if guess == item
|
||||
return mid
|
||||
elsif guess > item
|
||||
high = mid - 1
|
||||
binary_search(list, item, low, high)
|
||||
else
|
||||
low = mid + 1
|
||||
binary_search(list, item, low, high)
|
||||
end
|
||||
end
|
||||
|
||||
# If item is not found
|
||||
return nil
|
||||
end
|
||||
|
||||
# Create array with numbers 1 through 100
|
||||
my_list = (1..100).to_a
|
||||
|
||||
puts binary_search(my_list, 2) # => 1
|
||||
puts binary_search(my_list, 50) # => 49
|
||||
p binary_search(my_list, 101) # => nil
|
||||
@@ -1,7 +1,8 @@
|
||||
def max(list)
|
||||
if list.length == 2
|
||||
# condition ? then : else
|
||||
list[0] > list[1] ? list[0] : list[1]
|
||||
if list.empty?
|
||||
nil
|
||||
elsif list.length == 1
|
||||
numbers[0]
|
||||
else
|
||||
sub_max = max(list[1..-1])
|
||||
list[0] > sub_max ? list[0] : sub_max
|
||||
|
||||
Reference in New Issue
Block a user