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

  

 

相关文章:

  • 2021-06-30
  • 2022-12-23
  • 2022-01-05
  • 2021-12-09
  • 2021-09-23
  • 2022-12-23
  • 2021-07-30
  • 2022-01-13
猜你喜欢
  • 2022-01-17
  • 2021-11-18
  • 2021-07-14
  • 2022-12-23
  • 2021-06-22
  • 2021-07-07
  • 2021-12-14
相关资源
相似解决方案