Salve a tutti,
ho il seguente codice:

codice:
#include <stdio.h>
#define MAX 20

int sinistro(int i)
{
 return 2*i+1;
}
 
int destro(int i)
{
 return 2*i+2;
}
 
int padre(int i)
{
 return (int)(i-1/2);
}
 
stampavettore(int *vettore,int n)
{
 int i;
 
 for(i=0 ; i<=n ; 
 printf("%d ",vettore[i++]));
}
 
int riempivettore(int *vettore)
{
 int i;
 
 i=0;
 do {
     printf("%d\n", i);
 printf("inserire l'elemento %d dell'array('-1' per terminare): ",i+1);
 scanf("%d",vettore+i);
  stampavettore(vettore,i);
  printf("\n");
 } while (vettore[i++] != -1);
  return i-2;
}
 
void scambia(int *n1,int *n2)
{
 int temp;
 
 temp = *n1;
 *n1 = *n2;
 *n2 = temp;
}
 
void heapify(int *vettore, int i,int heapsize)
{
 int l,r,maggiore;
  
 l = sinistro(i);

 r = destro(i);

 if ((l <= heapsize) && (vettore[l] > vettore[i]))
 {
 maggiore = l;
 }
 else
 {
 maggiore = i;
 }
 
 if ((r <= heapsize) && (vettore[r]>vettore[maggiore]))
 {
 maggiore = r;
 }
 if (maggiore != i)
 {
 scambia(&vettore[i],&vettore[maggiore]);
 heapify(vettore,maggiore,heapsize);
 }
}


 
void buildheap(int *vettore,int heapsize,int n)
{
 int i;
 
 for (i=(int)(n/2) ; i>=0 ; i--)
 {    
 heapify(vettore,i,heapsize);
 }
}
 
 
heapsort(int *vettore,int n)             
{
 
  int i,heapsize;

 heapsize=n;
 
 buildheap(vettore,heapsize,n);
 for (i=n ; i>0 ; i--)
 {
 scambia(&vettore[0],&vettore[i]);
 heapsize--;
 heapify(vettore,0,heapsize);
 }
}
 
main()
{
 int vettore[MAX];
 int n; /*numero di elementi*/
 
 n=riempivettore(vettore);
 
 printf("Valore di n %d\n", n);
 
 heapsort(vettore,n);
 
 stampavettore(vettore,n);

}
non riesco a capire perchè in questa funzione:

void buildheap(int *vettore,int heapsize,int n)

vengono passati i valori heapsize ed n, che sono sempre uguali.

Credo che ci sarà un motivo, grazie a chiunque mi vuol dare una mano.

Ciao