很多时候,我们需要在一堆数字查找的不仅仅是目标值,还可能是比它大的,比它小的,大于等于它的,小于等于它的临近值。现在,老师正在验收作业,我无聊的等待。。。写写python,总结一下这些二分。
array=[4,2,6,1,45,23,27,12,89,5]
# for key:find '==' value
def midfind(key):
length=len(array)
ans=length-1
l=0
r=length-1
while(l<=r):
mid=(l+r)>>1
if(array[mid]<key):
l=mid+1
elif(array[mid]>key):
r=mid-1
else:
return mid
return -1
# for key:find '>=key' min value
def midfind1(key):
length=len(array)
ans=-1
l=0
r=length-1
while(l<=r):
mid=(l+r)>>1
if(array[mid]<key):
ans=mid
l=mid+1
else: r=mid-1
return ans+1
#for key:find '<=key' max value
def midfind2(key):