1、循环非递归方法:
def binarySearch(c,k):
l=0
r=len(c)-1
while l<=r:
mid = (l+r)//2
if k < c[mid]:
r = mid - 1
elif k > c[mid]:
l = mid + 1
else:
return mid
return -1
if __name__ == '__main__':
c = [10, 11, 12, 17, 19, 21, 22, 24, 32, 38, 49, 51, 66, 78, 90]
b=binarySearch(c,10)
print(b)
2、递归实现
def binarySearch(c,k,l,r):
while l<=r:
mid = (l+r)//2
if k > c[mid]:
return binarySearch(c,k,mid+1,r)
elif k < c[mid]:
return binarySearch(c,k,l,mid-1)
else:
return mid
return -1
if __name__ == '__main__':
c = [10, 11, 12, 17, 19, 21, 22, 24, 32, 38, 49, 51, 66, 78, 90]
l=0
r=len(c)-1
ans = binarySearch(c,22,l,r)
print(ans)