use std::collections::BinaryHeap;
fn main() {
// Sorted array example
let mut sorted_array = vec![1, 3, 5, 7, 9];
println!("Sorted array removals:");
while !sorted_array.is_empty() {
// Remove smallest element (front)
let smallest = sorted_array.remove(0); // costly shift
print!("{} -> ", smallest);
}
println!("null");
// Heap example (min-heap using Reverse wrapper)
use std::cmp::Reverse;
let mut heap = BinaryHeap::from(vec![Reverse(1), Reverse(3), Reverse(5), Reverse(7), Reverse(9)]);
println!("Heap removals:");
while let Some(Reverse(smallest)) = heap.pop() {
print!("{} -> ", smallest);
}
println!("null");
}
let smallest = sorted_array.remove(0); // costly shift
Remove first element from array, causes all elements to shift left
let mut heap = BinaryHeap::from(vec![Reverse(1), Reverse(3), Reverse(5), Reverse(7), Reverse(9)]);
Create a min-heap by wrapping values with Reverse to invert order
while let Some(Reverse(smallest)) = heap.pop() {
Pop smallest element from heap efficiently without shifting all elements
Sorted array removals:
1 -> 3 -> 5 -> 7 -> 9 -> null
Heap removals:
1 -> 3 -> 5 -> 7 -> 9 -> null