由於對於二分法一直都不是很熟悉,這里就用C++中的lower_bound和upper_bound練練手。這里用python實現
lower_bound和upper_bound本質上用的就是二分法,lower_bound查找有序數組的第一個小於等於目標數的,upper_bound查找有序數組第一個大於等於目標數的
下面是python實現的lower_bound代碼
def lower_bound(arr,target,i,j):
while i < j:
mid = i + (j - i) / 2
mid = int(mid)
if target > arr[mid]:
i = mid + 1
else:
j = mid
return mid
upper_bound的python代碼
def upper_bound(arr,target,i,j):
while i < j:
mid = int(i + (j - i) / 2)
if target > arr[mid]:
i = mid + 1
else:
j = mid
print(mid)
return mid
