AitSar/search/exponential.rs
1fn exponential_search(arr: &[i32], target: i32) -> Option<usize> {
2 let mut bound = 1;
3 while bound < arr.len() && arr[bound] < target {
4 bound *= 2;
5 }
6 let left = bound / 2;
7 let right = std::cmp::min(bound, arr.len() - 1);
8
9 arr[left..=right].binary_search(&target).ok().map(|i| left + i)
10}