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
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.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); } }
Aspetto una vostra risposta grazie mille

Rispondi quotando