diff --git a/src/heap_sort.rs b/src/heap_sort.rs index 164b018..201626c 100644 --- a/src/heap_sort.rs +++ b/src/heap_sort.rs @@ -1,3 +1,14 @@ -pub fn heap_sort(){ - +use std::collections::BinaryHeap; + +pub fn heap_sort(arr: &mut Vec) { + let mut heap = BinaryHeap::new(); + for i in arr.iter_mut() { + heap.push(*i); + } + for i in 0..arr.len() { + if let Some(val) = heap.pop() { + arr[i] = val; + } + } + arr.reverse() } diff --git a/src/main.rs b/src/main.rs index aceec52..d2b17ec 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,6 +79,15 @@ fn radix_sort_demo(){ println!("Array before radix sort: {:?}",arr); println!("Array after radix sort: {:?}",radix_sort::radix_sort(arr)); } +fn heap_sort_demo(){ + println!("-------------------"); + println!("HEAP SORT DEMO:"); + println!("-------------------"); + let mut arr:Vec = vec![9, 3, 7, 4, 69, 420, 42]; + println!("Array before heap sort: {:?}",arr); + heap_sort::heap_sort(&mut arr); + println!("Array after heap sort: {:?}",arr); +} fn main() { println!(""); println!("|~~~~~~~~~~~~~~~|"); @@ -96,4 +105,5 @@ fn main() { bubble_sort_demo(); merge_sort_demo(); radix_sort_demo(); + heap_sort_demo(); }