BusquedaBinaria

Run Settings
LanguageRust
Language Version
Run Command
fn binary_search(arr: &[i32], target_value: &i32) -> Option<usize> { let array_length = arr.len(); let mut min_index: i32 = 0; let mut max_index: i32 = array_length as i32 - 1; while min_index <= max_index { let middle_index = ((max_index - min_index) / 2) + min_index; let middle_index_as_usize = middle_index as usize; let middle_value = &arr[middle_index_as_usize]; if middle_value == target_value { return Some(middle_index_as_usize); } if middle_value < target_value { min_index = middle_index + 1; } if middle_value > target_value { max_index = middle_index - 1; } } None } fn log_binary_search_result(arr: &[i32], target_value: &i32) -> () { if let Some(result) = binary_search(&arr, &target_value) { println!("Encontrado {} en el índice {} de la matriz.", target_value, result); } else { println!("{} no se encontró en la matriz.", target_value); } } fn main() -> () { let arr: [i32; 20] = [ 1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, ]; let target: i32 = 88; log_binary_search_result(&arr, &target) } #[cfg(test)] mod tests { use super::*; #[test] fn assert_value_is_found() { let valid_arr = [ 1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, ]; for i in 0..valid_arr.len() { assert_eq!(i, binary_search(&valid_arr, &valid_arr[i]).unwrap()); } } #[test] fn assert_value_is_not_found() { let sorted_arr = [ 1, 10, 20, 47, 59, 63, 75, 88, 99, 107, 120, 133, 155, 162, 176, 188, 199, 200, 210, 222, ]; let unsorted_arr = [ 2, 22, 48, 58, 61, 73, 84, 90, 100, 119, 132, 154, 160, 177, 187, 197, 201, 211, 2242, ]; for i in 0..unsorted_arr.len() { assert_eq!(None, binary_search(&sorted_arr, &unsorted_arr[i])); } } }
Editor Settings
Theme
Key bindings
Full width
Lines