bisect:数组二分查找算法

    1. import bisect
    • bisect.bisect_left(a, x, lo=0, hi=len(a):在a中找到x合适的插入点以维持有序。参数lo和hi被用于考虑需要考虑的子集。
    • bisect.bisect_right/bisect.bisect:参数同上,略。返回的插入点是a中已存在元素x的右侧。
    • bisect.``bisect_left:返回的插入点是 a 中已存在元素 x 的左侧
    • bisect.``insort_left:插入
    • bisect.insort_right(a, x, lo=0, hi=len(a))
    • bisect.insort(a, x, lo=0, hi=len(a)) ```python import bisect

    In [43]: a = [1, 3, 5, 7, 9]

    In [44]: bisect.bisect(a, 6) Out[44]: 3

    In [45]: bisect.bisect_left(a, 6) Out[45]: 3

    In [46]: bisect.bisect_right(a, 6) Out[46]: 3

    In [47]: bisect.bisect(a, 5) Out[47]: 3

    In [48]: bisect.bisect_left(a, 5) Out[48]: 2

    In [49]: bisect.bisect_right(a, 5) Out[49]: 3

    In [50]: a Out[50]: [1, 3, 5, 7, 9]

    In [51]: bisect.insort(a, 5)

    In [52]: a Out[52]: [1, 3, 5, 5, 7, 9]

    In [53]: bisect.insort_left(a, 3)

    In [54]: a Out[54]: [1, 3, 3, 5, 5, 7, 9]

    In [55]: bisect.insort_right(a, 9)

    In [56]: a Out[56]: [1, 3, 3, 5, 5, 7, 9, 9] ```