Files
exercism_puzzles/python/binary-search/binary_search.py
T

29 lines
1014 B
Python

# iterative version of the code
# def find(search_list: list[int], value: int) -> int:
# left: int = 0
# right: int = len(search_list) - 1
# search_list.sort()
# while left <= right:
# middle_index: int = (left + right) // 2
# if value < search_list[middle_index]:
# right = middle_index - 1
# elif value > search_list[middle_index]:
# left = middle_index + 1
# else:
# return middle_index
# raise ValueError(f"value not in array")
# recursive version of the code
def find(search_list: list[int], value: int) -> int:
middle_index: int = (len(search_list) - 1) // 2
search_list.sort()
if search_list == []:
raise ValueError("value not in array")
if value < search_list[middle_index]:
return find(search_list[:middle_index], value)
elif value > search_list[middle_index]:
return (middle_index + 1) + find(search_list[middle_index + 1:], value)
else:
return middle_index