ho provato ad implementare questa funzione all'interno di un esercizio ma non funziona, il problema è che quando va a ripristinare l'heap a volte considera elementi che invece non dovrebbe considerare, come mai???


Heap sort:
codice:
void heapsort(int a[],int n)
{
   int k=n-1;


while(k>0)
    {
      printf("- a[0]: %d  a[%d]: %d\n\n",a[0],k,a[k]);
      swap(&a[0],&a[k]);
      k--;
      boh(a,k);
      stamp(a,n);
    }
}
Atoh:
codice:
void atoh(int a[],int n)
{

   int f=n;

   /*bottom-up*/
   while(f>0)
   {heapify(a,f);f--;}

   /*top-down*/
   while(f<n)
   {heapify(a,f);f++;}
}
mi sto scervellando