Binary search
Rust Algorithms
match on Ordering
Flowchart (ISO 5807)
Source code
use std::cmp::Ordering;
fn binary_search(v: &[i32], key: i32) -> Option<usize> {
let mut lo = 0;
let mut hi = v.len();
while lo < hi {
let mid = (lo + hi) / 2;
match v[mid].cmp(&key) {
Ordering::Equal => return Some(mid),
Ordering::Less => lo = mid + 1,
Ordering::Greater => hi = mid,
}
}
None
}