# Binary Search (bisect) in Python

• Difficulty Level : Easy
• 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

 `# 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.

## 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` `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

 `# 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`   `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

My Personal Notes arrow_drop_up
Recommended Articles
Page :