O'Reilly logo
  • Arash Mahdavi thinks this is interesting:

And if the guess is too high, you update high. Here’s the full code:


Cover of Grokking Algorithms: An illustrated guide for programmers and other curious people


import math
def binary_search(list, item):

low = 0
high = len(list)-1

while low <= high:
    mid = math.ceil( (low+high)/2 )
    guess = list[mid]
    if guess == item:
        return mid
    elif guess >item:
        high = mid - 1
        low = mid + 1

return None

my_list = [1,3,5,7,9]
print( binary_search(my_list,6))