Ciao a tutti ragazzi devo implementare un algoritmo di quick sort avendo come base di partenza il metodo partition già implementato e il metodo quicksort da completare. Ho implementato il metodo quicksort ma Il problema è che non ho capito come passare a partition il parametro numConfronti, in quanto nel metodo quicksort è dichiarato come un semplice int mentre nel metodo partition è dichiarato come un array !
codice:
static int quicksort(int A[], int inf, int sup){
int numConfronti;
return numConfronti;
}
codice:
static int quicksort(int A[], int inf, int sup){
int numConfronti;
if(sup-inf>=1){
int pos=partition(A,inf,sup,????);
if((pos-inf) < pos-pos+1){
quicksort(A,inf,pos-1);
quicksort(A,pos+1,sup);
}
else{
quicksort(A,pos+1,sup);
quicksort(A,inf,pos-1);
}
}
return numConfronti;
}
codice:
private static int partition(int A[], int inf, int sup, int []numConfronti){
int i,j;
numConfronti[0]=0;
i=inf;
j=sup;
int med=(inf+sup)/2;
int x=A[med];
int temp=A[inf];
A[inf]=A[med];
A[med]=temp;
while (true)
{
numConfronti[0]++;
while(i<=sup && A[i]<=x){ i++;
numConfronti[0]++;
}
numConfronti[0]++;
while(A[j]>x) {j--;
numConfronti[0]++;
}
if(i<j) {
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
else break;
}
temp=A[inf];
A[inf]=A[j];
A[j]=temp;
return j;
}