Binary Search v1 (Passing True or False if found) has both iterative and recursive functions
def iter_binary_search(ordered_list, lower, upper, item):
"""
Iterative version of binary search
Test whether item is in ordered_list[lower:upper]
"""
while lower + 1 < upper:
mid = (lower + upper) / 2
if item < ordered_list[mid]:
upper = mid
else:
lower = mid
return item == ordered_list[lower]
def rec1_binary_search(ordered_list, item):
"""
Recursively check whether item lies in non-empty ordered_list
"""
if len(ordered_list) == 1:
return item == ordered_list[0]
mid = len(ordered_list) / 2
if item < ordered_list[mid]:
return rec1_binary_search(ordered_list[: mid], item)
else:
return rec1_binary_search(ordered_list[mid :], item)