230 likes | 426 Views
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X. Chapter Contents. Reprise: The ADT HeapUsing an Array to Represent a HeapAdding an EntryRemoving the RootCreating a HeapHeapsort. Carrano, Data Structures an
E N D
1. A Heap Implementation Chapter 28
2. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Chapter Contents Reprise: The ADT Heap
Using an Array to Represent a Heap
Adding an Entry
Removing the Root
Creating a Heap
Heapsort
3. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Reprise: The ADT Heap A complete binary tree
Nodes contain Comparable objects
In a maxheap
Object in each node = objects in descendants
Note contrast of uses of the word "heap"
The ADT heap
The heap of the operating system from which memory is allocated when new executes
4. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Reprise: The ADT Heap Interface used for implementation of maxheap
5. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Using an Array to Represent a Heap
6. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Using an Array to Represent a Heap When a binary tree is complete
Can use level-order traversal to store data in consecutive locations of an array
Enables easy location of the data in a node's parent or children
Parent of a node at i is found at i/2 (unless i is 1)
Children of node at i found at indices 2i and 2i + 1
7. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Class MaxHeap
8. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Class MaxHeap Begin at next available position for a leaf
Follow path from this leaf toward root until find correct position for new entry
As this is done
Move entries from parent to child
Makes room for new entry
9. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Adding an Entry
10. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Adding an Entry
11. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Adding an Entry
12. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Adding an Entry
13. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Removing the Root
14. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Removing the Root
15. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Removing the Root To remove a heap's root
Replace the root with heap's last child
This forms a semiheap
Then use the method reheap
Transforms the semiheap to a heap
View method removeMax
16. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Creating a Heap
17. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Creating a Heap
18. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Heapsort Possible to use a heap to sort an array
Place array items into a maxheap
Then remove them
Items will be in descending order
Place them back into the original array and they will be in order
19. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Heapsort
20. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Heapsort
21. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Heapsort
22. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Heapsort
23. Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X Heapsort View implementation of a heapSort
Efficiency is O(n log n).
However, quicksort is usually a better choice
Note it also uses reheap
View source code of reheap