The document explains the heap sort algorithm, which includes transforming an array into a heap and sorting it by repeatedly extracting the largest (or smallest) element. It details the properties of max heaps and min heaps, their operations, and provides pseudocode for the heap sort process. The advantages of heap sort are highlighted, emphasizing its O(n log n) time complexity and O(1) space efficiency.
Definitions of heap:
Aheap is a data structure that stores a collection of
objects (with keys), and has the following
properties:
Complete Binary tree
Heap Order
3.
The heap sortalgorithm 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.
1-Max heap :
max-heapDefinition:
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.
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 ]
Heap-Sort
sorting strategy:
1. BuildMax 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.
Heap Sort pseducode
Heapsort(Aas 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)
31.
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)
32.
2-Min heap :
min-heapDefinition:
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.
33.
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
Insertion
Algorithm
1. Addthe 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.
50.
19
12 16
41 7
19
1216
41 7 17
19
12 17
41 7 16
Insert 17
swap
Percolate up to maintain the heap
property
51.
Conclusion The primaryadvantage 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.