Searching Algorithms

How Interpolation Search Works

158
index 016 of 16 still possible15
  • Ruled out
  • Still possible
  • Checked now
  • Found
1/3

Looking for 158 in 16 sorted values, from 4 to 196.

Settings

More options
Is it in the array?
Gaps between values

Two to 64 numbers. Sorted ascending before the search runs.

Interpolation Search

  1. 1while a[lo] <= target <= a[hi]:
  2. 2 // guess where the value should sit
  3. 3 pos = lo + (target - a[lo])
  4. 4 * (hi - lo) / (a[hi] - a[lo])
  5. 5 if a[pos] == target: return pos
  6. 6 if a[pos] < target: lo = pos + 1
  7. 7 else: hi = pos - 1
  8. 8return NOT_FOUND

How the Six Compare

AlgorithmBestAverageWorstNeeds a sorted array
LinearO(1)O(n)O(n)No
BinaryO(1)O(log n)O(log n)Yes
TernaryO(1)O(log n)O(log n)Yes
JumpO(1)O(√n)O(√n)Yes
ExponentialO(1)O(log n)O(log n)Yes
InterpolationO(1)O(log log n)*O(n)Yes

Scroll the table sideways for the rest of the columns.

Interpolation search only reaches that average when the gaps between the values are even.