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);
}