[Python] Binary Search (bisect, insort)
- 2023.09.17
- Binary Method / Divide and Conquer bisect insort
bisect
回傳插入x
的index
( O(long(n)) ),保持a
的排序 (a
是個已排序 list )
若x
已存在a
中則index
會在a
中的所有x
的右/左邊
bisect.bisect(a, x[, lo=0, hi=len(a), *, key=None])
≡bisect.bisect_right(a, x[, lo=0, hi=len(a), *, key=None])
bisect.bisect_left(a, x[, lo=0, hi=len(a), *, key=None])
搜尋插入x
的index
( O(long(n)) )並插入 ( O(n) ),保持a
的排序 (a
是個已排序 list )
若x
已存在a
中則index
會在a
中的所有x
的右/左邊
bisect.insort(a, x[, lo=0, hi=len(a), *, key=None])
≡bisect.insort_right(a, x[, lo=0, hi=len(a), *, key=None])
bisect.insort_left(a, x[, lo=0, hi=len(a), *, key=None])
Parameters:
[lo, hi]: 搜索範圍
key: 排序方法
ex:
x = [6, 5]
array = [[8, 7], [4, 2], [8, 1], [7, 7], [10, 1]]
def get_sum(e):
return e[0] + e[1]
i = bisect(array, get_sum(x), key=getsum)
References
Last Updated on 2024/12/19 by A1go