18 lines
416 B
Plaintext
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
|
|
}
|