由於對於二分法一直都不是很熟悉,這里就用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