Heaps
By preparing a priority queue, we can
determine which item is the next highest
priority.
A priority queue maintains items sorted in
descending order of their priority value --
so that the item with the highest priority
value is always at the beginning of the list.