Upcoming SlideShare
×

# Lec21

692 views

Published on

1 Like
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
Your message goes here
• Be the first to comment

Views
Total views
692
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
68
0
Likes
1
Embeds 0
No embeds

No notes for slide

### Lec21

1. 1. Binary Heaps Delete-min Building a heap in O(n) time Heap Sort 1
2. 2. Delete-min The minimum element is the one at the top of the heap. We can delete this and move one of its children up to fill the space. Empty location moves down the tree. Might end up at any position on last level. Resulting tree would not be left filled. 2
3. 3. Delete-min in a Heap 8 10 11 18 21 13 12 43 23 26 29 31 19 17 This is not a heap 3
4. 4. Delete-min in a Heap (2) Replace top element with last element of heap. Heapify(1) 8 10 11 16 21 13 12 43 23 26 29 31 19 17 4
5. 5. Building a heap We start from the bottom and move up All leaves are heaps to begin with 23 43 26 10 21 13 31 16 12 8 29 11 19 17 5
6. 6. Building a Heap: Analysis Correctness: induction on i, all trees rooted at m > i are heaps Running time: n calls to Heapify = n O(lg n) = O(n lg n) We can provide a better O(n) bound.  Intuition: for most of the time Heapify works on smaller than n element heaps 6
7. 7. Building a Heap: Analysis (2) height of node: length of longest path from node to leaf height of tree: height of root time for Heapify(i) = O(height of subtree rooted at i) assume n = 2k – 1 (a complete binary tree) 7
8. 8. Building a heap: Analysis (3) For the n/2 nodes of height 1, heapify() requires at most 1 swap each. For the n/4 nodes of height 2, heapify() requires at most 2 swaps each. For the n/2i nodes of height i, heapify() requires at most i swaps each. So total number of swaps required is n 1 n 1 n 1 T ( n) O 2 3 ... 1 k 2 4 8 lg n lg n i i 1/ 2 O n 1 since 2 2 i 1 2i i 1 2i 1 1/ 2 O ( n) 8
9. 9. Building a Heap: Analysis (4) How? By using the following "trick" i 1 x if x 1 //differentiate i 0 1 x i 1 1 i x 2 //multiply by x i 1 1 x i x 1 i x 2 //plug in x i 1 1 x 2 i 1/ 2 2 i 1 2i 1/ 4 Therefore Build-Heap time is O(n) 9
10. 10. Heap Sort Create a heap. Do delete-min 8 repeatedly till heap becomes 10 11 empty. To do an in place 12 21 13 17 sort, we move deleted element 16 23 43 29 26 19 31 to end of heap. 10
11. 11. Running times of heap operations Insert:O(log n) Heapify: O(log n) Find minimum: O(1) Delete-min: O(log n) Building a heap: O(n) Heap Sort: O(nlog n) 11