Binary Search (bisect) in Python
Last Updated :
04 Feb, 2022
Binary Search is a technique used to search element in a sorted list. In this article, we will looking at library functions to do 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.
Python3
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.
Python3
from bisect import bisect_left
def BinarySearch(a, x):
i = bisect_left(a, x)
if i:
return (i - 1 )
else :
return - 1
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.
Python3
from bisect import bisect_right
def BinarySearch(a, x):
i = bisect_right(a, x)
if i ! = 0 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
Please refer Binary Search for writing your own Binary Search code.
Reference :
https://docs.python.org/3/library/bisect.html
Please Login to comment...