Heap Sort Algorithm in Data Structure

Algorithm for Heap Sort:

Algorithm fnHeapSort
{
heap_size=length;
fnMaxHeap(length);
for(i=length; i>=2; i--)
{
interchange(1, i);
heap_size--;
MaxHeapify(1, heap_size);
}
} // End of Algorithm

Algorithm for Max Heap:

Algorithm fnMaxHeap(length)
{
for(i=length/2; i>=1; i--)
max_heapify(i, length);
} // End of Algorithm

Algorithm for Max Heapify:

Algorithm MaxHeapify(i, length)
{
l=left(i);
r=right(i);
if(l<=heap_size)
{
if(l<=heap_size && P[l]>=P[i])
largest=l;
else
largest=i;
if(r<=heap_size && P[r]>P[largest])
largest=r;
if(largest!=i)
{
interchange(i, largest);
MaxHeapify(largest, heap_size);
}
}
}

Algorithm for Left Child:

Algorithm left(i)
{
return(2*i);
}

Algorithm for Right Child:

Algorithm right(i)
{
return(2*i);
}