Heap Sort Algorithm
Pseudocode:
HeapSort(arr):
BuildMaxHeap(arr)
for i = length(arr)-1 down to 1:
swap(arr[0], arr[i])
Heapify(arr, 0, i)
Heapify(arr, root, size):
largest = root
left = 2 * root + 1
right = 2 * root + 2
if left < size and arr[left] > arr[largest]:
largest = left
if right < size and arr[right] > arr[largest]:
largest = right
if largest != root:
swap(arr[root], arr[largest])
Heapify(arr, largest, size)