二分查找
第几次查询 剩余查询数
1 N/2
2 N/22
3 N/23
... ...
k N/2k
在第k次已经找到
N/2k = 1
k = log2N
则时间复杂度为O( log2N)
空间复杂度O(1),辅助空间度
def bin_search(arr,x):
l,r = 0,len(arr)-1
# 左边小于右边
while l <=r :
mid = (l + r )// 2
if x < arr[mid]:
r = mid -1
elif x > arr[mid]:
l = mid +1
else :
return mid
return False
# 左大于右边
def bin_search_recur(arr,x):
k = len(arr)
if k<1:
return False
mid = k//2
if x< arr[mid]:
return bin_search_recur(arr[:mid-1],x)
elif x> arr[mid]:
return bin_search_recur(arr[mid+1:],x)
else :
return True


浙公网安备 33010602011771号