Heapsort

From Wiki**3

Introdução

Implementação

 #define pq(A) a[l-1+A]
 void heapsort(Item a[], int l, int r) {
   int k, N = r-l+1;
   for (k = N/2; k >= 1; k--) 
     fixDown(&pq(0), k, N);
   while (N > 1) {
     exch(pq(1), pq(N)); 
     fixDown(&pq(0), 1, --N);
   }
 }