An Interest In:
Web News this Week
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
June 19, 2021 07:23 pm GMT
Original Link: https://dev.to/ayabouchiha/interpolation-search-algorithm-6nf
Interpolation search algorithm
definition of interpolation search
The Interpolation Search is an improvement over Binary Search for instances, where the values in a sorted array are uniformly distributed. Binary Search always goes to the middle element to check. On the other hand, interpolation search may go to different locations according to the value of the key being searched. For example, if the value of the key is closer to the last element, interpolation search is likely to start search toward the end side.
Space complexity
The space complexity of interpolation search is O(1)
Time complexity of interpolation search
Best case | Average case | Worst case |
---|---|---|
O(1) | O(log2(log2 n)) | O(n) |
Formula of interpolation search
the formula of interpolation search is:pos = low + ((x A[low]) * (high low) // (A[high] A[low]))
if you asked like me how we got this formula checkout this amazing article by Hitesh Kumar
Algorithm of interpolation search
- calculating the pos using the formula above
- if
array[pos] == wantedElement
: return pos - if
array[pos] > wantedElement
:high = pos - 1
- if
array[pos] < wantedElement
:low = pos + 1
- stay repeating until the
array[pos] == wantedElement
or the sub-array reduces to zero.
Implementation of interpolation search using python
def InterpolationSearchAlgorithm(wantedItem: int, sortedItems: list): """ => Algorithm Name: Interpolation search => Algorithm Type: search algorithms => Time Complexity: [best case] => O(1) [average case] => O(log2(log2 n)) [worst case] => O(n) => Space Complexity => O(1) => Algorithm [1] => calculating the pos using the formula above [2] => if `array[pos] == wantedElement`: return pos [3] => if `array[pos] > wantedElement` : `high = pos - 1` [4] => if `array[pos] < wantedElement` : `low = pos + 1` [5] => stay repeating until the `array[pos] == wantedElement` or the sub-array reduces to zero. => params (wantedItem) => int (sortedItems) => sorted list and equally distributed. => Returns (index) if the wanted item exists in the sortedItems (False) if the wanted item doesn't exist """ low = 0 high = len(sortedItems) - 1 while (high >= low and sortedItems[high] >= wantedItem and sortedItems[low] <= wantedItem): # formula of interpolation sort pos = low + ((high - low) // (sortedItems[high] - sortedItems[low]) * (wantedItem - sortedItems[low])) if sortedItems[pos] == wantedItem: # if it match return his index (pos) return pos elif sortedItems[pos] < wantedItem: # if A[pos] is smaller than wantedItem low = pos + 1 else: # if A[pos] is larger than wantedItem high = pos - 1 return False
References and useful resources
- https://www.techiedelight.com/interpolation-search/
- https://medium.com/@smellycode/demystifying-interpolation-formula-for-interpolation-search-211780c43269
- https://www.geeksforgeeks.org/interpolation-search/
- https://www.youtube.com/watch?v=-MPTAD4z0gY
- https://en.wikipedia.org/wiki/Interpolation_search#:~:text=Interpolation%20search%20is%20an%20algorithm,by%20W.%20W.%20Peterson%20in%201957.
#day_7
Have a great day!
Original Link: https://dev.to/ayabouchiha/interpolation-search-algorithm-6nf
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To