This preview shows pages 1–2. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: COMP 250 Winter 2010 24 - building a heap (fast), heapsort 3/12/2010 (modified 3/22) Building a heap in O ( n ) (fast) In the last two lectures we discussed a method for building a heap which, in the worst case, took about n log n swaps. But suppose you want to build a heap very quickly. For example, you might be using the heap to implement a priority queue, and from time to time you want to change the definition of how any two keys/nodes are compared. This requires that you rebuild the priority queue (heap), based on the new comparison definition. So lets now look at a faster method for building a heap. We start off with a complete binary tree with n nodes and a definition for ordering these nodes, but we make no assumption about the present state of the ordering. We want to take these nodes and build a heap. [paragraph modified 3/22] The buildHeap() algorithm from lecture 22 built a heap from the top down by swapping elements up the heap from child to parent. Given that the first i 1 elements already defined a heap, it compared the i th element to its parent (and grandparent, etc, if need be) and carries out a sequence of swaps. Worst case was that the i-th element had to climb log i steps to the root. The faster buildHeap algorithm goes in the opposite direction(s). We build a heap from the bottom up , by swapping elements down the heap toward the leaves. The fast buildHeap algorithm is based on the following downHeap algorithm, which takes a complete binary tree that is represented as an array a and an index i (where 1 i n ). Suppose this binary tree has the property that node i s two children (if they exist) are heaps, but the subtree rooted at i might itself not be a heap because i might be greater than at least one of its children. The operation downHeap turns the tree rooted at i into a heap (by swapping...
View Full Document