1. 程式人生 > >python實現lower_bound和upper_bound

python實現lower_bound和upper_bound

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