def binaryS(data, num):
l = 0
r=len(data)-1
find = False
mid = 0
while True:
if(l>r):
break
mid = (r+l)/2
if(num> data[mid]):
l = mid+1
elif(num<data[mid]):
r = mid-1
else:
find = True
break
print mid,data[mid],'find=',find
def binaryS_iter(data, num,l,r):
if(l>r):
return -1
mid = (r+l)/2
if(num> data[mid]):
l = mid+1
return binaryS_iter(data,num,l,r)
elif(num<data[mid]):
r = mid-1
return binaryS_iter(data,num,l,r)
else:
#print 'in func\n',mid,data[mid]
return mid
binaryS([1,3,7,10,33,44,56],44)
binaryS([1,3,7,10,33,44,56],1)
binaryS([1,3,7,10,33,44,56],2)
binaryS([1,3,7,10,33,44,56],45)
ind =binaryS_iter([1,3,7,10,33,44,56],44,0,6)
print 'ind=',ind
ind=binaryS_iter([1,3,7,10,33,44,56],1,0,6)
print 'ind=',ind
print binaryS_iter([1,3,7,10,33,44,56],2,0,6)
print binaryS_iter([1,3,7,10,33,44,56],45,0,6)