~\cyan 1:\grey1\bf void \tt heapify \tt (\bf int \tt A[], \bf int \tt k, \bf int \tt N )
\grey1 ~~~~~~{
~\cyan 2:~~~\grey1\bf while \tt (2*k <= N) 
\grey1 ~~~~~~~~~{	
~\cyan 3:~~~~~~\grey1\bf int \tt j = 2*k;
~\cyan 4:~~~~~~\grey1\bf if \tt (j < N && A[j] < A[j+1]) j++;
~\cyan 5:~~~~~~\grey1\bf if \tt (A[k] >= A[j]) \bf break;
~\cyan 6:~~~~~~\grey1\tt swap(A, k, j);
~\cyan 7:~~~~~~\grey1\tt k = j;
\grey1 ~~~~~~~~~}	
\grey1 ~~~~~~}	


~\cyan 8:\grey1\bf void \tt heapsort \tt (\bf int \tt A[], \bf int \tt N )
\grey1 ~~~~~~{
~\cyan 9:~~~\grey1\bf for \tt ( \bf int \tt i= N/2; i >= 1; i-- )
\cyan 10:~~~~~~\grey1\tt heapify(A, i, N);
\cyan 11:~~~\grey1\bf while \tt (N > 1) 
\grey1 ~~~~~~~~{		
\cyan 12:~~~~~~\grey1\tt swap(A, N, 1);
\cyan 13:~~~~~~\grey1\tt heapify(A, 1, --N);
\grey1 ~~~~~~~~~}	
\grey1 ~~~~~~}	
