非递归实现:
def binary_search(alist,item):
first=0
last=len(alist)-1
while first<=last:
midpoint=(first+last)//2
if alist[midpoint]==item:
return True
elif item<alist[midpoint]:
last=midpoint-1
else:
first=midpoint+1
return False
a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(binary_search(a,3))
print(binary_search(a,11))
结果;
True
False
递归实现:
def binary_search(alist,item):
if len(alist) == 0:
return False
else:
midpoint=len(alist)//2
if alist[midpoint]==item:
return True
else:
if item<alist[midpoint]:
return binary_search(alist[:midpoint],item)
else:
return binary_search(alist[midpoint+1:],item)
b=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(binary_search(b,3))
print(binary_search(b,11))