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

18 lines
395 B
Plaintext

fn bin_search<T : PartialOrd>(sar : &[T], v : &T) -> Option<usize> {
let mut lowi=0;
let mut highi=sar.len();
loop {
if lowi>=highi {
return None;
}
let mi=lowi+(highi-lowi)/2;
if sar[mi].lt(v) {
lowi=mi+1;
} else if sar[mi].gt(v) {
highi=mi;
} else {
return Some(mi);
}
}
}