Amontoados

From Wiki**3

Implementação de Amontoado com Vector

Algoritmo fixUp

 void fixUp(Item a[], int k) {  /* sobe “k” */
   while (k > 1 && less(a[k/2], a[k])) {
     exch(a[k], a[k/2]);
     k = k/2;
   }
 }

Algoritmo fixDown

 void fixDown(Item a[], int k, int N) {  /* desce “k” */
   int j;
   while (2*k <= N) {
     j = 2*k;
     if (j < N && less(a[j], a[j+1])) j++;
     if (!less(a[k], a[j])) break;
     exch(a[k], a[j]); k = j;
   }
 }