bisect可以實現二分查找和插入。其函數有bisect_left,bisect_right和insert_left,insert_right。分別對應查找和插入。
由於數組中存在重復元素,所以才有left和right的區分。其含義分別是在元素的左側以及右側。
其定義如下:
查找的示例代碼:
import bisect
arr = [0,1,1,1,2,2,4,4,6,6,7,8,9,9,10]
pos_right = bisect.bisect_right(arr,6)
pos_left = bisect.bisect_left(arr,6)
print(pos_right,pos_left)
結果為:
10 8
插入示例:
arr1 = [0,1,1,1,2,2,4,4,6,6,7,8,9,9,10]
arr2 = [0,1,1,1,2,2,4,4,6,6,7,8,9,9,10]
bisect.insort_right(arr1,5)
bisect.insort_left(arr2,5)
print(arr1)
print(arr2)
返回的結果其實是一樣的。