RosettaCodeData/Task/Binary-search/Rust/binary-search.rs

16 lines
414 B
Rust
Raw Permalink Normal View History

2026-02-01 16:33:20 -08:00
fn binary_search<T:PartialOrd>(searchvalue: T, v: &[T] ) -> Option<usize> {
2023-07-01 11:58:00 -04:00
let mut lower = 0 as usize;
2026-02-01 16:33:20 -08:00
let mut upper = v.len();
while upper > lower {
let mid = lower + (upper - lower) / 2;
2023-07-01 11:58:00 -04:00
if v[mid] == searchvalue {
2026-02-01 16:33:20 -08:00
return Some(mid);
2023-07-01 11:58:00 -04:00
} else if searchvalue < v[mid] {
2026-02-01 16:33:20 -08:00
upper = mid;
2023-07-01 11:58:00 -04:00
} else {
lower = mid + 1;
}
}
None
}