Heapsort: Difference between revisions

From Wiki**3

No edit summary
 
 
Line 5: Line 5:


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

Latest revision as of 13:50, 19 May 2005

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