1.两点作用:
1.插入时就维护好一个排好序的数组
2.数组非常大的时候速度较快
用着也很简单,只有2个操作:查找、插入,每个操作各有2个方法,分别是
2.查找
1 | bisect.bisect_left(a, x, lo=0, hi=len(a)) |
返回一个数组a的下标i,a[lo… i-1] < x <= a[i…hi]。也就是说在i左边的元素都比x小,在i及i右边的元素,都等于或大于x.
1 | bisect.bisect_right() |
这两个是一样的。
返回一个数组a的下标i,a[lo… i-1] <= x <a[i…hi]。也就是说在i左边的元素小于等于x,在i及i右边的元素,都大于x
3.插入
1 | bisect.insort_left() |
插入的效果跟查找是一样的,不过就是查找然后插入:list.insert(bisect.bisect_left())
1 | bisect.insort_right() |
上边四个操作可以用下图帮助理解: