bisect in Python
Binary Search 是一种用于搜索排序列表中元素的technique。在本文中,我们将研究执行Binary Search 的库函数。
Finding first occurrence of an element.
bisect.bisect_left(a, x, lo=0, hi=len(a)) : Returns leftmost insertion point of x in a sorted list. Last two parameters are optional, they are used to search in sublist.
# Python code to demonstrate working # of binary search in library from bisect import bisect_left def BinarySearch(a, x): i = bisect_left(a, x) if i != len(a) and a[i] == x: return i else: return -1 a = [1, 2, 4, 4, 8] x = int(4) res = BinarySearch(a, x) if res == -1: print(x, "is absent") else: print("First occurrence of", x, "is present at", res)
Output:
First occurrence of 4 is present at 2
Finding greatest value smaller than x.
# Python code to demonstrate working # of binary search in library from bisect import bisect_left def BinarySearch(a, x): i = bisect_left(a, x) if i: return (i-1) else: return -1 # Driver code a = [1, 2, 4, 4, 8] x = int(7) res = BinarySearch(a, x) if res == -1: print("No value smaller than ", x) else: print("Largest value smaller than ", x, " is at index ", res)
Output:
Largest value smaller than 7 is at index 3
Finding rightmost occurrence
bisect.bisect_right(a, x, lo=0, hi=len(a)) Returns rightmost insertion point of x in a sorted list a. Last two parameters are optional, they are used to search in sublist.
# Python code to demonstrate working # of binary search in library from bisect import bisect_right def BinarySearch(a, x): i = bisect_right(a, x) if i != len(a)+1 and a[i-1] == x: return (i-1) else: return -1 a = [1, 2, 4, 4] x = int(4) res = BinarySearch(a, x) if res == -1: print(x, "is absent") else: print("Last occurrence of", x, "is present at", res)
Output:
Last occurrence of 4 is present at 3