bisect:数组二分查找算法
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] ```