From 43b45b31fdafbc9d143c35f5b074d13f152ef9c2 Mon Sep 17 00:00:00 2001 From: specCon18 Date: Tue, 28 May 2024 19:18:33 -0400 Subject: [PATCH] implemented heap sort --- src/heap_sort.rs | 15 +++++++++++++-- src/main.rs | 10 ++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) 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(); }