From 21ddc2dd5cf6c17df6fd7052729016f8e66ed346 Mon Sep 17 00:00:00 2001 From: Michael Liendo Date: Wed, 25 Oct 2023 13:50:24 -0400 Subject: [PATCH 1/2] refactor: use ordering with cmp --- src/binary_search.rs | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/src/binary_search.rs b/src/binary_search.rs index 20c8d06..02c8f0a 100644 --- a/src/binary_search.rs +++ b/src/binary_search.rs @@ -1,35 +1,22 @@ use std::cmp::Ordering; -#[allow(dead_code)] -fn binary_search(items: Vec, value: T) -> Option +#[warn(dead_code)] +fn binary_search(list: Vec, item: T) -> Option where T: std::cmp::Ord, { - if items.is_empty() { - // Avoid running if no items are provided + if list.is_empty() { return None; - } - - let (mut start, mut end) = (0, items.len() - 1); + }; + let (mut low, mut high) = (0, list.len() - 1); - loop { - let idx = (start + end) / 2; - let attempt = items.get(idx).unwrap(); - - if start > end { - break; - } + while low < high { + let mid = (low + high) / 2; - match attempt.cmp(&value) { - Ordering::Greater => { - end = idx - 1; - } - Ordering::Less => { - start = idx + 1; - } - Ordering::Equal => { - return Some(idx); - } + match list[mid].cmp(&item) { + Ordering::Greater => high = mid, + Ordering::Less => low = mid + 1, + Ordering::Equal => return Some(mid), } } From aec6e93aeb292135a2174ec2399c5f700bb3405f Mon Sep 17 00:00:00 2001 From: Michael Liendo Date: Wed, 25 Oct 2023 22:54:11 -0400 Subject: [PATCH 2/2] fix: fmt issues --- src/dijkstras.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/dijkstras.rs b/src/dijkstras.rs index 21b2588..accaa05 100644 --- a/src/dijkstras.rs +++ b/src/dijkstras.rs @@ -41,10 +41,7 @@ impl PartialEq for Visit { impl Eq for Visit {} #[allow(dead_code)] -fn dijkstra<'a>( - start: Node<'a>, - graph: &WeightedGraph<'a>, -) -> HashMap, usize> { +fn dijkstra<'a>(start: Node<'a>, graph: &WeightedGraph<'a>) -> HashMap, usize> { let mut distances: HashMap = HashMap::new(); let mut visited: HashSet = HashSet::new(); let mut to_visit: BinaryHeap> = BinaryHeap::new();