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