Presentation is loading. Please wait.

Presentation is loading. Please wait.

Copyright ©2012 by Pearson Education, Inc. All rights reserved

Similar presentations


Presentation on theme: "Copyright ©2012 by Pearson Education, Inc. All rights reserved"— Presentation transcript:

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


Download ppt "Copyright ©2012 by Pearson Education, Inc. All rights reserved"

Similar presentations


Ads by Google