Búsqueda binaria en Rust
Reduce el rango a la mitad en cada paso, con la aritmética de índices que el borrow checker acepta.
fn binary_search(items: &[i32], target: i32) -> Option<usize> {
let (mut lo, mut hi) = (0, items.len());
while lo < hi {
let mid = (lo + hi) / 2;
if items[mid] == target {
return Some(mid);
}
if items[mid] < target {
lo = mid + 1;
} else {
hi = mid;
}
}
None
}
Palabras clave y builtins usados aquí
NoneOptionSomeelsefni32ifletmutreturnusizewhile
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 260
- Tokens
- 96
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 64 segundos.
Paso 4 de 8 en Colecciones; paso 33 de 39 en Fundamentos del lenguaje.