250 likes | 356 Views
CS2420: Lecture 20. Vladimir Kulyukin Computer Science Department Utah State University. Outline. HeapSort (Chapter 7). The Heap Property. A Heap is a Complete Binary Tree. All levels are filled except possibly the last one. The Heap Property:
E N D
CS2420: Lecture 20 Vladimir Kulyukin Computer Science Department Utah State University
Outline • HeapSort (Chapter 7)
The Heap Property • A Heap is a Complete Binary Tree. All levels are filled except possibly the last one. • The Heap Property: • Minimal heap property: for every node X with parent P, the key in P is smaller than or equal to the key in X. • Maximum heap property: for every node X with parent P, the key in P is greater than or equal to the key in X.
The Heap Property P P X X The minimum heap property The maximum heap property
Packing Heaps into Arrays 1 16 2 3 14 10 We can convert this heap into a one dimensional array by doing a level-order traversal on it. 4 5 6 7 8 7 9 3 8 9 10 2 4 1
Packing Heaps into Arrays 1 16 We can convert this heap into an array by doing a level-order traversal on it. 2 3 14 10 4 5 6 7 8 7 9 3 8 9 10 Note that the index count of the array starts with 1. 2 4 1 1 2 3 4 5 6 7 8 9 10 0 16 14 10 8 7 9 3 2 4 1
Packing Heaps into Arrays 1 16 2 3 14 10 4 5 6 7 8 7 9 3 8 9 10 2 4 1 1 2 3 4 5 6 7 8 9 10 0 16 14 10 8 7 9 3 2 4 1
Interval Nodes and Leaves 1 16 2 3 14 10 4 5 6 7 8 7 9 3 8 9 10 2 4 1 1 2 3 4 5 6 7 8 9 10 0 16 14 10 8 7 9 3 2 4 1 Internal Nodes Leaves
Maintaining the Heap Property • A heap is a container so items can be inserted and deleted at any time. • The problem is that if we insert/delete an item, the heap property may be broken after the insertion/deletion. • We need to make sure that the heap property is restored after every insertion and deletion.
Maintaining the Property: Max Heap Example Heap Property is broken. 4 7 14 2 8 1 0 1 2 3 4 5 6 7 4 14 7 2 8 1
Maintaining the Property: Example 4 We swap 4 with the maximum of 14 and 7. 7 14 2 8 1 0 1 2 3 4 5 6 7 4 14 7 2 8 1
Maintaining the Property: Example 14 We swap 4 with the maximum of 2 and 8. 7 4 2 8 1 0 1 2 3 4 5 6 7 14 4 7 2 8 1
Maintaining the Property: Example 14 7 The heap property is now restored at every node. 8 2 4 1 0 1 2 3 4 5 6 7 14 8 7 2 4 1
RestoreHeap: Maintaining The Heap Property RestoreHeap(A, i) { int Max = 0; int LCH = LeftChild(i); int RCH = RightChild(i); If ( LCH <= A.size() && A[LCH] > A[i] ) { Max = LCH; } Else { Max = i; } If ( RCH <= A.size() && A[RCH] > A[MAX] ) { Max = RCH; } If ( Max != i ) { Swap(A[i], A[Max]); RestoreHeap(A, Max); } }
Building a Heap • Given the dimensions of the array A, discard all the leaves. The leaf indices are [N/2 + 1, N]. • Start from the Rightmost Inner (Non-Leaf) Node and go up the tree restoring the heap property at every inner node until you reach and restore the heap property at the root node.
Building a Max Heap: Example 1 10 2 3 5 20 4 5 6 7 11 15 21 34 There are 7 nodes in the heap; so the inner node range is [1, 3]. Thus, we start with node 3.
Building a Max Heap: Example 1 10 RestoreHeap(3) 5 2 20 3 5 4 6 7 11 15 21 34
Building a Max Heap: Example 1 10 RestoreHeap(2) 5 2 34 3 5 4 6 7 11 15 21 20
Building a Max Heap: Example RestoreHeap(1) 1 10 15 2 34 3 5 4 6 7 11 5 21 20
Building a Max Heap: Example 1 34 RestoreHeap(3) 3 15 2 10 5 4 6 7 11 5 21 20
Building a Max Heap: Example 1 34 3 15 2 21 5 4 6 7 11 5 10 20