/* Ordina un'array con l'algoritmo quick sort L'algoritmo e' descritto nel testo di Cormen, Leiserson, Rivest, Introduzione agli algoritmi Jackson Libri Volume 1, Capitolo 8 (fino a 8.3 compreso) pagg.145-153 */ import javax.swing.JOptionPane; public class QuickSortAnimato { public static int partiziona(int[] v, int from, int to) { int separatore=v[from]; int i=from+1; int j=to; while(i=separatore) j--; // ora j indica un valore minore di separatore // oppure e' minore o uguale a i if(iseparatore) { i--; } // posiziona correttamente il separatore int app=v[i]; v[i]=v[from]; v[from]=app; return i; } public static void quick(int[] v, int from, int to) // ordina l'intervallo da from a to, estremi inclusi { if(from>=to) return; else { int separazione=partiziona(v, from, to); printArraySeparato(v, from, separazione, to); JOptionPane.showMessageDialog(null, "terminato partition su intervallo "+from+"-"+to+"\npivot "+v[separazione]+" in posizione "+separazione); quick(v, from, separazione-1); quick(v, separazione+1, to); } } public static void quickSort(int[] v) { quick(v, 0, v.length-1); } public static int[] leggiArrayInt() { int[] a=new int[26]; for(int i=0; i