Temo di avere copiato male il codice del QSort a lezione, ho degli errori in questo codice ma non so perchč:

codice:
public class QuickSort
{
	public static void main(String [] args)
	{
		int [] a={5,4,6,7,8,0};
		QSort(a,0,a.length-1);
	}
	
	
	public static void QSort(int [] A, int i, int r)
	{
		if(i>=r)
			return;
		else{
			int n=partition(A,i,r);
			QSort(A,i,n);
			QSort(A,n+1,r);
		}
		
	}
	
	public static int partition(int [] A, int i, int r)
	{
		int a=i-1;
		int b=r+1;
		int p=A[r];
		
		while(a<b)
		{
			a=a+1;
			
			while(A[a]<p)           //errore....indexoutofbounds...
			{
				b=b-1;
				
				while(A[b]>p)
				{
					if(a<b)
						swap(A,a,b);
				}
			}
		}
		
		return p;
	}
	
	public static void swap(int [] A,int a, int b)
	{
		int tmp=A[a];
		A[a]=A[b];
		A[b]=tmp;
	}
	
	
}