0
点赞
收藏
分享

微信扫一扫

通过二分查找所处区间binary_find_index

def binary_find_index(biz_type_thresholds, prob, lo=0, hi=None):
     """
     阈值降序排序,通过二分法查找prob所在的合适位置
     :param biz_type_thresholds: 阈值降序排序
     :param prob:
     :param lo:
     :param hi:
     :return:
     """
     if biz_type_thresholds is None or len(biz_type_thresholds) == 0:
         return -1
     if lo < 0:
         raise ValueError('lo must be non-negative')
     if hi is None:
         hi = len(biz_type_thresholds)
     if prob >= biz_type_thresholds[0]:
         return 1    while lo < hi:
         mid = (lo + hi) // 2
         # print(mid, biz_type_thresholds[mid], biz_type_thresholds)
         if prob < biz_type_thresholds[mid]:
             lo = mid + 1
         elif prob > biz_type_thresholds[mid]:
             hi = mid
         else:
             return mid + 1
     return lo + 1

举报

相关推荐

0 条评论