w3resource

Python Data Structures and Algorithms: Binary search

Python Search and Sorting : Exercise-1 with Solution

Write a Python program for binary search.
Binary Search : In computer science, a binary search or half-interval search algorithm finds the position of a target value within a sorted array. The binary search algorithm can be classified as a dichotomies divide-and-conquer search algorithm and executes in logarithmic time.

Step by step example :

Binary search Part - 1


Binary search Part - 2


Binary search Part - 3

Binary search Part - 4

Sample Solution:

Python Code:

def binary_search(item_list,item):
	first = 0
	last = len(item_list)-1
	found = False
	while( first<=last and not found):
		mid = (first + last)//2
		if item_list[mid] == item :
			found = True
		else:
			if item < item_list[mid]:
				last = mid - 1
			else:
				first = mid + 1	
	return found
	
print(binary_search([1,2,3,5,8], 6))
print(binary_search([1,2,3,5,8], 5))

Sample Output:

False                                                                                                         
True

Flowchart:

Flowchart: Python Data Structures and Algorithms: Binary search

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:

Python Code Editor :

Contribute your code and comments through Disqus.

Previous: Python Search and Sorting Exercise Homes.
Next: Write a Python program for sequential search.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Python: Tips of the Day

Time it:

timeit library is great for timing Python execution times. Just pass a function in string format to timeit.timeit() method and it will carry out 1 million executions to report the minimum time the code takes.

Its very useful to compare small code pieces and different functions but can be sluggish with big code.

Check out the example below demonstrating the execution time difference between 2 very similar list comprehension methods in Python:

import timeit
lst1='''list(range(100))'''
lst2='''[i for i in range(100)]'''
a=timeit.timeit(lst1)
b=timeit.timeit(lst2)
print(a, b, sep="------")

Output:

1.9301698543131351------5.389458132907748