CPSC 220 Fall 2007
 HW 10: Heaps
- Build a max heap by repeated insertion of the following keys in the
order given.  Show the heap after each key is inserted.
9  23  2  7  15  6  8  5  12  3
 
 
- Build a max heap by placing the elements above directly into an array
and then using the O(N) heap-building algorithm.  Show
the heap after each subtree is heapified.
 
- Suppose you want the k largest elements in the heap in order; how would
you go about rearranging the array so that these are the last k element?  (Note that
the entire array won't be a max heap anymore, although the first part of
it will be.)  Explain your algorithm and then illustrate it by do it for 
your heap in #2 and k=4.
 
- We talked about a heap as a way of implementing a priority queue.
Compare it to a linked list and an ordered array for the priority
queue operations by filling out the table below in big-O.
 
|  | Build (N elements)
 | Enqueue | Dequeue |  
| Heap |  |  |  |  
| Unordered Linked List |  |  |  |  
| Ordered Array |  |  |  |  
| BST (balanced) |  |  |  |  
 
 
- (Extra Credit) The complexity to build a heap bottom-up as in #1 is O(N).  This is 
explained in the first full paragraph on page 477 of the text.  
Unfortunately, there is an error in the argument.
- Find the error and explain what is wrong.
- Try to correctly justify the O(N) time (which is correct).