Skip to content
Related Articles

Related Articles

Binary Search (bisect) in Python

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 04 Feb, 2022
View Discussion
Improve Article
Save Article

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




# 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
 
= [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




# 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
= [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




# 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 != 0 and a[i-1] == x:
        return (i-1)
    else:
        return -1
 
= [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
 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!