Ciao a tutti, ho un problema con il quicksort; su carta sembra funzionare ma se lo eseguo e dopo stampo l'array, visualizzo l'array nell' ordine di partenza.. Ecco il mio codice:

codice:
import java.util.Random;

public class QuickSort{
	
	static void qsort(int[] a, int inf, int sup) {
		if(inf < sup) {
			Random random = new Random ();
			int iPivot = inf + random.nextInt((sup-inf) + 1);
			int x = a[iPivot];
			int i = inf;
			int j = sup;
			do {
				if(a[i] < x) i++;
				else if(a[j] > x) j--;
				else {
					scambia(a,i,j);
					i++; j--;
				}
			} while(i <= j);
			qsort(a, inf, j);
			qsort(a, i, sup);
		}
	}
	
	
	public static void scambia (int [] a, int i, int j) {
		int tmp = a[i];
		a[i] = a[j];
		a[j] = tmp;
	}
	
	
	public static void stampa (int [] a) {
		for (int i=0; i<a.length; i++)
			System.out.print(a[i] + ", ");
	}
	
	
	public static void main(String a[]){
		int array[] = {5,1,4,2,3};
		qsort (array, 0, a.length-1);
		stampa(array);
	
	
	}
		 
  
}
Qualcuno mi sa aiutare?? Thanks!!