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), } } 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();