I'm trying to write binary search in python 3.5 but it wont work I'm not sure why.
def binarySearch(alist, value):
first = 0
last = len(alist)-1
midpoint = (last//2)
while binarySearch:
if value == alist[midpoint]:
return True and print ("found")
else:
if value < midpoint:
last = midpoint-1
else:
if value > midpoint:
first = midpoint+1
binarySearch([1,2,3,4,5,6,7,8],3)
if I put value as 4 it displays found, if I put anything else nothing happens and its stuck running doing nothing.
Thanks for your help.
User1915011 beat me to my answer. In line with his answer and @wim's comment, I have made the following changes your binarySearch
method.
found
variablemidpoint
inside the loopfirst<=last
Return found after the while
loop to indicate success or failure.
def binarySearch(alist, value):
first = 0
last = len(alist)-1
found = False
while first<=last and not found:
midpoint = (first + last)//2
if value == alist[midpoint]:
found = True
else:
if value < alist[midpoint]:
last = midpoint-1
else:
if value > midpoint:
first = midpoint+1
return found
if binarySearch([1,2,3,4,5,6,7,8],3):
print "found"