Please look at this code:
def chop(array, search):
lo = 0
high = len(array) - 1
while lo <= high:
mid = (high + lo) /2
if array[mid] == search:
return 'true'
elif search > array[mid]:
low = mid + 1
else:
high = mid - 1
return 'false'
if __name__ == '__main__':
a = [1,2,3,4,5,6,7,8,9,10]
print chop(a, 3)
I wrote this little script which is supposed to search for number in array – regular binary search. So I run the script, and for example when I put in chop(a, 1) I get true, when I put in chop(a, 2) I get true, but when I put chop(a, 3) I don’t get an answer, just empty line in the Python Shell.
Does anyone have an idea on what is going on?
I’m guessing this is your bug:
Your while loop uses the variable
lo, and you’re defining a new variable calledlowwithin your while loop. In essence, you’re never updating yourlovariable.Change that line to:
and your algorithm should work.