二分查找,有序数组查找
1、时间复杂度:O(logn)
每次循环,查找的区间为:n,n/2,n/4,…,n/2^k,其中k为循环次数,
因此:
令n/2^k=1:
n=2^k
k=logn
时间复杂度为O(logn)
2、代码:
def dine(n,num):
maxn=len(num)-1
minn=0
while minn<=maxn:
mid=(maxn+minn)//2
if n ==num[mid]:
print(mid)
break
elif n<num[mid]:
maxn=mid-1
elif n>num[mid]:
minn=mid+1
else:
print('Null')
3、max-1和min+1:
避免重复搜索。