Salve a tutti,
ho il seguente codice:
non riesco a capire perchè in questa funzione: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); }
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

Rispondi quotando
