KEMBAR78
heap Sort Algorithm | PPTX
Heap Sort Algorithm
Khansa abubkr mohmed
Lemia al’amin algmri
Definitions of heap:
A heap is a data structure that stores a collection of
objects (with keys), and has the following
properties:
 Complete Binary tree
 Heap Order
The heap sort algorithm has two
major steps :
i. The first major step involves transforming the complete
tree into a heap.
ii. The second major step is to perform the actual sort by
extracting the largest or lowerst element from the root
and transforming the remaining tree into a heap.
Types of heap
Max Heap
Min Heap
Max Heap Example
1619 1 412 7
Array A
19
12 16
41 7
Min heap example
127 191641
Array A
1
4 16
127 19
1-Max heap :
max-heap Definition:
is a complete binary tree in which the value in
each internal node is greater than or equal to
the values in the children of that node.
Max-heap property:
 The key of a node is ≥ than the keys of its children.
8
Max heap Operation
 A heap can be stored as an
array A.
 Root of tree is A[1]
 Left child of A[i] = A[2i]
 Right child of A[i] = A[2i + 1]
 Parent of A[i] = A[ i/2 ]
Example Explaining : A
4 1 3 2 16 9 10 14 8 7
9
2
14 8
1
16
7
4
3
9 10
1
2 3
4 5 6 7
8 9 10
14
2 8
1
16
7
4
10
9 3
1
2 3
4 5 6 7
8 9 10
2
14 8
1
16
7
4
3
9 10
1
2 3
4 5 6 7
8 9 10
14
2 8
1
16
7
4
3
9 10
1
2 3
4 5 6 7
8 9 10
14
2 8
16
7
1
4
10
9 3
1
2 3
4 5 6 7
8 9 10
8
2 4
14
7
1
16
10
9 3
1
2 3
4 5 6 7
8 9 10
i = 5 i = 4 i = 3
i = 2 i = 1
Build Max-heap
Heapify() Example
David Luebke
10
11/20/2017
16
4 10
14 7 9 3
2 8 1
16 4 10 14 7 9 3 2 8 1A =
Heapify() Example
David Luebke
11
11/20/2017
16
4 10
14 7 9 3
2 8 1
16 10 14 7 9 3 2 8 1A = 4
Heapify() Example
David Luebke
12
11/20/2017
16
4 10
14 7 9 3
2 8 1
16 10 7 9 3 2 8 1A = 4 14
Heapify() Example
David Luebke
13
11/20/2017
16
14 10
4 7 9 3
2 8 1
16 14 10 4 7 9 3 2 8 1A =
Heapify() Example
David Luebke
14
11/20/2017
16
14 10
4 7 9 3
2 8 1
16 14 10 7 9 3 2 8 1A = 4
Heapify() Example
David Luebke
15
11/20/2017
16
14 10
4 7 9 3
2 8 1
16 14 10 7 9 3 2 1A = 4 8
Heapify() Example
David Luebke
16
11/20/2017
16
14 10
8 7 9 3
2 4 1
16 14 10 8 7 9 3 2 4 1A =
Heapify() Example
David Luebke
17
11/20/2017
16
14 10
8 7 9 3
2 4 1
16 14 10 8 7 9 3 2 1A = 4
Heapify() Example
David Luebke
18
11/20/2017
16
14 10
8 7 9 3
2 4 1
16 14 10 8 7 9 3 2 4 1A =
Heap-Sort
sorting strategy:
1. Build Max Heap from unordered array;
2. Find maximum element A[1];
3. Swap elements A[n] and A[1] :
now max element is at the end of the array! .
4. Discard node n from heap
(by decrementing heap-size variable).
5. New root may violate max heap property, but its
children are max heaps. Run max_heapify to fix this.
6. Go to Step 2 unless heap is empty.
HeapSort() Example
 A = {16, 14, 10, 8, 7, 9, 3, 2, 4, 1}
20
16
14 10
8 7 9 3
2 4 1
1
2 3
4 5 6 7
8 9 10
HeapSort() Example
 A = {14, 8, 10, 4, 7, 9, 3, 2, 1, 16}
21
14
8 10
4 7 9 3
2 1 16
1
2 3
4 5 6 7
8 9
i = 10
HeapSort() Example
 A = {10, 8, 9, 4, 7, 1, 3, 2, 14, 16}
22
10
8 9
4 7 1 3
2 14 16
1
2 3
4 5 6 7
8
10i = 9
HeapSort() Example
 A = {9, 8, 3, 4, 7, 1, 2, 10, 14, 16}
23
9
8 3
4 7 1 2
10 14 16
1
2 3
4 5 6 7
9 10i = 8
HeapSort() Example
 A = {8, 7, 3, 4, 2, 1, 9, 10, 14, 16}
24
8
7 3
4 2 1 9
10 14 16
1
2 3
4 5 6
8 9 10
i = 7
HeapSort() Example
 A = {7, 4, 3, 1, 2, 8, 9, 10, 14, 16}
25
7
4 3
1 2 8 9
10 14 16
1
2 3
4 5
7
8 9 10
i = 6
HeapSort() Example
 A = {4, 2, 3, 1, 7, 8, 9, 10, 14, 16}
26
4
2 3
1 7 8 9
10 14 16
1
2 3
4
6 7
8 9 10
i = 5
HeapSort() Example
 A = {3, 2, 1, 4, 7, 8, 9, 10, 14, 16}
27
3
2 1
4 7 8 9
10 14 16
1
2 3
5 6 7
8 9 10
i = 4
HeapSort() Example
 A = {2, 1, 3, 4, 7, 8, 9, 10, 14, 16}
28
2
1 3
4 7 8 9
10 14 16
1
2
4
5 6 7
8 9 10
i = 3
HeapSort() Example
 A = {1, 2, 3, 4, 7, 8, 9, 10, 14, 16} >>orederd
29
1
2 3
4 7 8 9
10 14 16
1
3
4
5 6 7
8 9 10
i =2
Heap Sort pseducode
Heapsort(A as array)
BuildHeap(A)
for i = n to 1
swap(A[1], A[i])
n = n - 1
Heapify(A, 1)
BuildHeap(A as array)
n = elements_in(A)
for i = floor(n/2) to 1
Heapify(A,i)
Heapify(A as array, i as int)
left = 2i
right = 2i+1
if (left <= n) and (A[left] > A[i])
max = left
else
max = i
if (right<=n) and (A[right] > A[max])
max = right
if (max != i)
swap(A[i], A[max])
Heapify(A, max)
2-Min heap :
min-heap Definition:
is a complete binary tree in which the value in
each internal node is lower than or equal to the
values in the children of that node.
Min-heap property:
 The key of a node is <= than the keys of its
children.
Min heap Operation
 A heap can be stored as an array A.
 Root of tree is A[0]
 Left child of A[i] = A[2i+1]
 Right child of A[i] = A[2i + 2]
 Parent of A[i] = A[( i/2)-1]
33
Min Heap
19
12 16
41 7
1619 1 412 7
Array A
Min Heap phase 1
19
1 16
412 7
Min Heap phase 1
1
19 7
412 16
Min Heap phase 1
1
4 7
1912 16
1,
Min Heap phase 2
16
4 7
1912
Min Heap phase 2
4
16 7
1912
Min Heap phase 2
4
12 7
1916
1,4
Min Heap phase 3
19
12 7
16
Min Heap phase 3
7
12 19
16
1,4,7
Min Heap phase 4
16
12 19
Min Heap phase 4
12
16 19
1,4,7,12
Min Heap phase 5
19
16
Min Heap phase 5
16
19
1,4,7,12,16
Min Heap phase 7
19
1,4,7,12,16,19
Min heap final tree
1612 19741
Array A
1
4 7
1612 19
Insertion
 Algorithm
1. Add the new element to the next available position at the
lowest level
2. Restore the max-heap property if violated
 General strategy is percolate up (or bubble up): if
the parent of the element is smaller than the
element, then interchange the parent and child.
OR
Restore the min-heap property if violated
 General strategy is percolate up (or bubble up): if
the parent of the element is larger than the element,
then interchange the parent and child.
19
12 16
41 7
19
12 16
41 7 17
19
12 17
41 7 16
Insert 17
swap
Percolate up to maintain the heap
property
Conclusion The primary advantage of the heap sort is its
efficiency. The execution time efficiency of the
heap sort is O(n log n).
 The memory efficiency of the heap sort, unlike
the other n log n sorts, is constant, O(1), because
the heap sort algorithm is not recursive.

heap Sort Algorithm