Download presentation
Presentation is loading. Please wait.
Published byHendri Gunardi Modified over 6 years ago
1
Copyright ©2012 by Pearson Education, Inc. All rights reserved
A Heap Implementation Chapter 26 Copyright ©2012 by Pearson Education, Inc. All rights reserved
2
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Contents Reprise: The ADT Heap Using an Array to Represent a Heap Adding an Entry Removing the Root Creating a Heap Heap Sort Copyright ©2012 by Pearson Education, Inc. All rights reserved
3
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Objectives Use an array to represent a heap Add an entry to an array-based heap Remove the root of an array-based heap Create a heap from given entries Sort an array by using a heap sort Copyright ©2012 by Pearson Education, Inc. All rights reserved
4
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Reprise: The ADT Heap A heap: Complete binary tree Nodes contain Comparable objects A maxheap: Object in each node greater than or equal to the objects in node’s descendants Copyright ©2012 by Pearson Education, Inc. All rights reserved
5
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Reprise: The ADT Heap Interface considered in Chapter 23 Copyright ©2012 by Pearson Education, Inc. All rights reserved
6
Array to Represent a Heap
Begin by using array to represent complete binary tree. Complete tree is full to its next-to-last level Leaves on last level are filled from left to right Locate either children or parent of any node by performing simple computation on node’s number Copyright ©2012 by Pearson Education, Inc. All rights reserved
7
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-1 (a) A complete binary tree with its nodes numbered in level order; (b) its representation as an array Copyright ©2012 by Pearson Education, Inc. All rights reserved
8
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 1 If an array contains the entries of a heap in level order beginning at index 0, what array entries represent a node’s parent, left child, and right child? Copyright ©2012 by Pearson Education, Inc. All rights reserved
9
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 1 If an array contains the entries of a heap in level order beginning at index 0, what array entries represent a node’s parent, left child, and right child? The node at array index i • Has a parent at index (i - 1)/2, unless the node is the root (i is 0). • Has any children at indices 2i + 1 and 2i + 2. Copyright ©2012 by Pearson Education, Inc. All rights reserved
10
Array to Represent a Heap
View code of class MaxHeap, Listing 26-1 Data fields: Array of Comparable heap entries Index of last entry in the array A constant for default initial capacity of heap Note: Code listing files must be in same folder as PowerPoint files for links to work Copyright ©2012 by Pearson Education, Inc. All rights reserved
11
Figure 26-2 The steps in adding 85 to the maxheap in Figure 26-1a
Copyright ©2012 by Pearson Education, Inc. All rights reserved
12
Figure 26-2 The steps in adding 85 to the maxheap in Figure 26-1a
Copyright ©2012 by Pearson Education, Inc. All rights reserved
13
Figure 26-2 The steps in adding 85 to the maxheap in Figure 26-1a
Copyright ©2012 by Pearson Education, Inc. All rights reserved
14
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 2 What steps are necessary to add 100 to the heap in Figure 26-2c? Copyright ©2012 by Pearson Education, Inc. All rights reserved
15
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 2 What steps are necessary to add 100 to the heap in Figure 26-2c? Place 100 as a right child of 80. Then swap 100 with 80, swap 100 with 85, and finally swap 100 with 90. Copyright ©2012 by Pearson Education, Inc. All rights reserved
16
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-3 A revision of the steps shown in Figure 26-2, to avoid swaps Copyright ©2012 by Pearson Education, Inc. All rights reserved
17
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-3 A revision of the steps shown in Figure 26-2, to avoid swaps Copyright ©2012 by Pearson Education, Inc. All rights reserved
18
Figure 26-4 An array representation of the steps in Figure 26-3
Copyright ©2012 by Pearson Education, Inc. All rights reserved
19
Figure 26-4 An array representation of the steps in Figure 26-3
Copyright ©2012 by Pearson Education, Inc. All rights reserved
20
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-5 The steps to remove the entry in the root of the maxheap in Figure 26-3d Copyright ©2012 by Pearson Education, Inc. All rights reserved
21
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-5 The steps to remove the entry in the root of the maxheap in Figure 26-3d Copyright ©2012 by Pearson Education, Inc. All rights reserved
22
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Q 6 What steps are necessary to remove the root from the heap in Figure 26-5d? Copyright ©2012 by Pearson Education, Inc. All rights reserved
23
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Q 6 What steps are necessary to remove the root from the heap in Figure 26-5d? Copyright ©2012 by Pearson Education, Inc. All rights reserved
24
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-6 The steps that transform a semiheap into a heap without swaps Copyright ©2012 by Pearson Education, Inc. All rights reserved
25
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-6 The steps that transform a semiheap into a heap without swaps Copyright ©2012 by Pearson Education, Inc. All rights reserved
26
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-7 The steps in adding 20, 40, 30, 10, 90, and 70 to an initially empty heap Copyright ©2012 by Pearson Education, Inc. All rights reserved
27
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-7 The steps in adding 20, 40, 30, 10, 90, and 70 to an initially empty heap Copyright ©2012 by Pearson Education, Inc. All rights reserved
28
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-7 The steps in adding 20, 40, 30, 10, 90, and 70 to an initially empty heap Copyright ©2012 by Pearson Education, Inc. All rights reserved
29
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 8 If an array represents a heap, and lastIndex is the index of the heap’s last leaf, show why the index of the first nonleaf closest to the end of the array is lastIndex/2 . Copyright ©2012 by Pearson Education, Inc. All rights reserved
30
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 8 If an array represents a heap, and lastIndex is the index of the heap’s last leaf, show why the index of the first nonleaf closest to the end of the array is lastIndex/2 . If a node at index i has children, they are at indices 2 i and 2 i + 1. The node at lastIndex/2 then has a child at lastIndex. Since this child is the last leaf, any nodes beyond the one at lastIndex/2 cannot have children and so must be leaves. Thus, the node at lastIndex/2 must be the nonleaf closest to the end of the array. Alternatively, examine some complete trees and notice that the desired nonleaf is the parent of the last child. This child is at index lastIndex of the array representation, so its parent has index lastIndex/2 . Copyright ©2012 by Pearson Education, Inc. All rights reserved
31
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-8 the steps in creating a heap of the entries 20, 40, 30, 10, 90, and 70 by using reheap Copyright ©2012 by Pearson Education, Inc. All rights reserved
32
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-8 the steps in creating a heap of the entries 20, 40, 30, 10, 90, and 70 by using reheap Copyright ©2012 by Pearson Education, Inc. All rights reserved
33
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Figure 26-8 the steps in creating a heap of the entries 20, 40, 30, 10, 90, and 70 by using reheap Complexity Copyright ©2012 by Pearson Education, Inc. All rights reserved
34
Figure 26-9 A trace of heap sort
Copyright ©2012 by Pearson Education, Inc. All rights reserved
35
Figure 26-9 A trace of heap sort
Copyright ©2012 by Pearson Education, Inc. All rights reserved
36
Figure 26-9 A trace of heap sort
Copyright ©2012 by Pearson Education, Inc. All rights reserved
37
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Efficiency Copyright ©2012 by Pearson Education, Inc. All rights reserved
38
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 9Trace the steps that the method heapSort takes when sorting the following array into ascending order: Copyright ©2012 by Pearson Education, Inc. All rights reserved
39
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Question 9Trace the steps that the method heapSort takes when sorting the following array into ascending order: Original array After repeated calls to reheap After swap After reheap After swap After reheap After swap After reheap After swap After reheap After swap After reheap After swap After reheap After swap Done Copyright ©2012 by Pearson Education, Inc. All rights reserved
40
Copyright ©2012 by Pearson Education, Inc. All rights reserved
End Chapter 26 Copyright ©2012 by Pearson Education, Inc. All rights reserved
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.