# What is Exponential Search in Python and how to implement it

In this tutorial, we will learn about the standard **Exponential search algorithm** and will implement it in Python.

**Exponential Search in Python**

**Exponential search** (also called **doubling search** or **galloping search** or **Struzik search**) is a searching technique for sorted, unbounded/infinite lists.

There are multiple ways to perform this method, but the most common and useful one is to find the range in which the element to be searched must be present. This is done by applying a Binary Search between the ranges.

**Space Complexity**

Exponential Search takes constant space irrespective of the number of elements in the array taking the space required to be of the range O(1).

**Time Complexity**

The time complexity of the above algorithm is O(1) in the best case scenario and O(logi) in the worst case scenario; where i is the index of the element to be searched. This makes the time complexity of Exponential search to O(logi).

**Implementation of Exponential search algorithm**

list1=list(map(int, input().split(" "))) val=int(input()) if list1[0] == val: print("0") i = 1 #Finding range for binarySearch while(i<len(list1) and list1[i]<=val): i = i * 2 min1=min(i,len(list1)) def binarySearch(data_list,low,high,value): if(high>= low): mid=int(low + ( high-low )//2) if data_list[mid] == value: return mid if data_list[mid] > value: return binarySearch(data_list,low,mid - 1,value) else: return binarySearch(data_list,mid + 1,high,value) if(high<low): return -1 # Applying binary search for specified range index=binarySearch(list1,i/2,min(i,len(list1)),val) if(index==-1): print("Element not found") else: print("Element found at ",index)

**INPUT :**

12 25 43 59 61 78 92 78

**OUTPUT :**

Element found at 5

The technique contains two parts. The first stage selects a range in which the search element would be in if it is in the list. In the second stage, a binary search is done on this range.

That’s it for now!

Drop your doubts in the comments section below.

Also, look at other searching methods :

## Leave a Reply