"""don't use "input" as a variable name. its a python keyword. make sure your array is sorted use integer division when computing midpoint """ def bsearch(input_array,target): lo,hi=0,len(input_array)-1 while lo<=hi: mid=(lo+hi)//2 if input_array[mid]==target: print "found at ",mid return mid if input_array[mid]>target: print "look left" hi=mid-1 if input_array[mid]<target: print "look right" lo=mid+1 return -1 a=[2,4,7,8,12,88,99,101] target=7 assert bsearch(a,1134)==-1,"value 1134 isn't in array but says it is" assert bsearch(a,2)==0,"value 2 is in the zero element of array.begenning" assert bsearch(a,101)==7,"value 101 is in the 7th element of array. end" assert bsearch(a,12)==4,"value 12 is in the 4th element of array. midpoint"
source share