Salve a tutti
Ho un problema non riesco a capire cosa fanno questi due metodi dell'algoritmo del quicksort
Chiedo aiuto.
Saluti
Posto il codice
codice:
public class QuickSort
{
public static void scambia(int[] v, int pos1, int pos2)
{
int app = v[pos1];
v[pos1] = v[pos2];
v[pos2] = app;
}
public static int partiziona(int[] v, int from, int to)
{
int sceltaSeparatore =(from+to)/2;
scambia(v, sceltaSeparatore, from);
int separatore = v[from];
int i = from+1;
int j = to;
while(i<j)
{
while(i<j && v[i]<=separatore)
i++;
while(i<j && v[j]>=separatore)
j--;
if(i<j)
scambia(v, i, j);
}
if(v[i]>separatore)
i--;
scambia(v, i, from);
return i;
}
public static void quickSort(int[] v, int from, int to)
{
if(from>=to)
return;
else
{
int separazione=partiziona(v, from, to);
quickSort(v, from, separazione-1);
quickSort(v, separazione+1, to);
}
}
public static void sort(int[] v)
{
quickSort(v, 0, v.length-1);
}
public static void printlnArray(int[] v)
{
for(int i=0; i<v.length; i++)
{
System.out.print(v[i]);
System.out.print("\t");
}
System.out.println();
}
public static void main(String[] args)
{
int[] vettore={10, 11, 5, 66, 3, 22, 9, 0, 45, 56, 51, 33};
System.out.println("prima dell'ordinamento");
printlnArray(vettore);
sort(vettore);
System.out.println("dopo l'ordinamento");
printlnArray(vettore);
System.exit(0);
}
}
Il codice funzione ma io ho un grosso problema premetto che conosco il funzionamento del quicksort ma non riesco a capire cosa fa il metodo partiziona.
Aspetto una vostra risposta grazie mille