二分法 python

def bisection_right(a, x):
    lo = 0
    hi = len(a)
    while hi > lo:
        mid = (hi+lo)//2
        if a[mid] > x:
            hi = mid
        else: # x >= a[mid]
            lo = mid + 1
    return lo


def bisection_left(a, x):
    lo = 0
    hi = len(a)
    while hi > lo:
        mid = (hi+lo)//2
        if x > a[mid]:
            lo = mid + 1
        else: # x <= a[mid]
            hi = mid
    return lo

猜你喜欢

转载自blog.csdn.net/qq_33287645/article/details/80293524