Chapter 7: Sorting Algorithms Heap Sort Mark Allen Weiss: Data Structures and Algorithm Analysis in...
-
date post
21-Dec-2015 -
Category
Documents
-
view
282 -
download
1
Transcript of Chapter 7: Sorting Algorithms Heap Sort Mark Allen Weiss: Data Structures and Algorithm Analysis in...
Chapter 7: Chapter 7: SorSorting ting AAlgorithmslgorithms
Heap Sort
Mark Allen Weiss: Data Structures and Algorithm Analysis in Java
Lydia Sinapova, Simpson College
2
Heap Sort
Basic IdeaComplexityExampleAnimation
3
Idea
Store N elements in a binary heap tree. Perform delete_Min operation N times,
storing each element deleted from the heap into another array.
Copy back the array.
• Not very efficient to use two arrays.• Improvement – use one array for the binary
heap and the sorted elements
4
Improvements
Use the same array to store the deleted elements instead of using another array
After each deletion we get a vacant position in the array - the last cell.
There we store the deleted element, which becomes part of the sorted sequence.
5
Improvements
When all the elements are deleted and stored in the same array following the above method, the elements will be there in reversed order.
What is the remedy for this?Store the elements in the binary heap tree in
reverse order of priority - then at the end the elements in the array will be in correct order.
6
Complexity
Sorts in O(NlogN) time by performing
N times deleteMax operations.
- Each deleteMax operation takes log N running time.
- N times performing deleteMax NlogN running time
Used for general purpose sorting,
guarantees O(N logN)
7
Example
15 19 10 7 17 16
1. Consider the values of the elements as
priorities and build the heap tree.
2. Start deleteMax operations, storing
each deleted element at the end of the
heap array.
8
Example (cont)
Note that we use only one array , treating its parts differently:
when sorting, part of the array will be the heap, and the rest part - the sorted array
9
Build the Heap
We start with the element at position SIZE/2comparing the item with the children.The hole is percolated down to position 6 and the item is inserted there.
15 19 7 17 16
10
Result:
15 19 16 7 17 10
hole child
10
Build the Heap
Next we compare position 2 with its children.
15 16 7 17 10
19
hole child1 child2
19 is greater than 7 and 17,
and we continue with position 1
15 19 16 7 17 10
11
Build the Heap
Percolate down the hole at position 1
19 16 7 17 10
15
The hole at position 1 is percolated down to position 2 -the greater child.
19 16 7 17 10
15
12
Build the Heap
Percolate down the hole at position 2
19 16 7 17 10
15
One of the children of the hole at position 2 - item 17, is greater than 15.
So we percolate the hole to position 5.19 17 16 7 15 10
13
Build the Heap
19 17 16 7 15 10
19
17 16
7 15 10
the heap is built
14
SortingDeleteMax the top element 19
17 16 7 15 19
17 16
7 15
Store the last heap element (10) in a temporary place.
Move the DeletedMax element (19) to the place where the last heap element was - the current available position in the sorted portion of the array.A hole is created at the top
10
15
SortingPercolate down the hole
16 7 15 19
16
7 15
10
17
17
16
SortingPercolate down the hole
16 715 19
16
7
15
10
17
17
17
SortingFill the hole
16 715 19
10
16
7
15
1017
17
18
SortingDeleteMax the top element 17
16 715 19
16
7
15
17
10
Store the last heap element (10) in a temporary place.
Move the DeletedMax element (17) to the place where the last heap element was - the current available position in the sorted portion of the array.A hole is created at the top
19
SortingPercolate down the hole
16 715 19
16
7
15
17
10
20
SortingFill the hole
16 715 19
10
16
7
15
1710
21
SortingDeleteMax the top element 16
1615 19
1015
1710
Store the last heap element (7) in a temporary place.
Move the DeletedMax element (16) to the place where the last heap element was - the current available position in the sorted portion of the array.A hole is created at the top
7
22
SortingPercolate down the hole
1615 19
10
15
1710
7
23
SortingFill the hole
1615 19
107
15
17107
24
SortingDeleteMax the top element 15
1615 19
7
17
10
7
Store the last heap element (10) in a temporary place.
Move the DeletedMax element (15) to the place where the last heap element was - the current available position in the sorted portion of the array.A hole is created at the top
25
SortingPercolate down the hole
1615 19
7
17
10
7
Since 10 is greater than the children of the hole, It has to be inserted in the hole
26
SortingFill the hole
1615 19
7
10
1710 7
27
SortingDeleteMax the top element 10
1615 1917
7
Store the last heap element (7) in a temporary place.
Move the DeletedMax element (10) to the place where the last heap element was - the current available position in the sorted portion of the array.A hole is created at the top
10
28
SortingFill the hole
1615 19
7
177 10
The hole has no children and so it has to be filled.
29
Sorted array
1615 19177 10
7 is the last element from the heap,
so now the array is sorted