いくつかのバイナリ検索文言がありますか?それらの違いは何ですか?-ジェイソン・リー答えは-知っているほとんど
https://www.zhihu.com/question/36132386/answer/530313852
中央:中央値の2より大きい。中央値は、次に小さいものです。
分解上限と二つの機能を見つけることが下界を見つけるためのバイナリ検索の実現
def lower_bound(array, first, last, value): # 返回[first, last)内第一个不小于value的值的位置
while first < last: # 搜索区间[first, last)不为空
mid = first + (last - first) // 2 # 防溢出
if array[mid] < value: first = mid + 1
else: last = mid
return first # last也行,因为[first, last)为空的时候它们重合
def upper_bound(array, first, last, value): # 返回[first, last)内第一个大于value的位置
while first < last:
mid = first + (last - first)//2
if array[mid] <= value: first = mid + 1
else: last = mid
return first
変換関係に注意してください。
LOWER_BOUND(最初、最後、値)の最小位置のx> =値を求めます
UPPER_BOUND(最初、最後、値):X>最小位置の値を求めます
- 1 UPPER_BOUND(最初、最後、値):最大位置のX <=値を見つけます