二分查找:输入一个有序的元素列表,如果要查找的元素包含在列表中,返回其位置,否则返回null。
python代码
1.迭代
def binary_search(lists,item):
low=0
high=len(lists)-1
#左闭右闭
while low<=high:
mid=(low+high)//2
guess=lists[mid]
if guess<item:
low=mid+1
elif guess==item:
return mid
else:
high=mid-1
return None
2.递归
def binary_search(lists,item):
n=len(lists)
if n>0: #递归终止的条件
mid=n//2
if lists[mid]==item:
return True
elif item < lists[mid]:
return binary_search(lists[:mid],item)
else:
return binary_search(lists[mid+1:],item)
else:
return False