Searching Algorithms

How Exponential Search Works

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

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.

Exponential Search

  1. 1if a[0] == target: return 0
  2. 2
  3. 3// double the bound until it passes
  4. 4bound = 1
  5. 5while bound < n and a[bound] < target:
  6. 6 bound *= 2
  7. 7
  8. 8// then binary search that span
  9. 9binarySearch(bound / 2, min(bound, n-1))

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.