RosettaCodeData/Task/Binary-search/Rust/binary-search-3.rust

18 lines
416 B
Plaintext

use std::cmp::Ordering::*;
pub fn binary_search<T: Ord>(data: &[T], target: &T) -> Option<usize> {
let mut high = data.len();
let mut low = 0;
let mut mid = high / 2;
while low < high {
match target.cmp(&data[mid]) {
Less => high = mid - 1,
Greater => low = mid + 1,
Equal => return Some(mid),
};
mid = (high + low) / 2;
}
None
}