Musze napisac analizer ktory bedzie analizowal przebieg kazdego przebiegu algorytmu podany algorytm:

void QuickSortPartition(int E[]){
    int m=0;
    int n=size(E);

    m = partition(E);

   if(m>1) then
          QuickSortPartition(E[0....m-1]); // wywolanie reurencyjne dla lewego fragmentu tablicy
   if((n-m-1)>1) then
         QuickSortPartition(E[m+1..n-1]); // wywolanie reurencyjne dla prawego fragmentu tablicy
}

napisalem cos takiego.

	void quickSortPartition(int E[]){
		int m=0;
		int n=E.length;
		m=partition(E);
		print(E);
		if(m>1){
			System.out.println("Rekurencja Lewa");
			E = sliceLeft(E,m);
			quickSortPartition(E);
		}
		if((n-m-1)>1){
			System.out.println("Rekurencja Prawa");
			E = sliceRight(E,m+1,n-1);
			quickSortPartition(E);
		}
	}
	
	//Pomocnicze
	
	int[] sliceRight(int tab[],int l,int r){
		int[] tabResult = new int[r-l+1];
		int count = 0;
		for(int i=l; i<=r; i++){
			tabResult[count] = tab[i];
			count++;
		}
		return tabResult;
	}
	
	int[] sliceLeft(int tab[],int l){
		int[] tabResult = new int[l];
		int count = 0;
		for(int i=0; i<l; i++){
			tabResult[count] = tab[i];
			count++;
		}
		return tabResult;
	}

	int[] swap(int tab[], int i, int j){
		int tmp = tab[i];
		tab[i] = tab[j];
		tab[j] = tmp;
		
		return tab;
	}
	
	int partition(int E[]){
               System.out.println("Partition");
		int l=-1; 
		int r=0;
		int n=E.length;
		while(r<n-1){
			if(E[r]<E[n-1]){
				if(r>l+1){
					E = swap(E,r,l+1);
				}
				l=l+1;
			}
			r=r+1;
		}
		if(l+1<n-1) 
			E = swap(E,l+1,n-1);
		return l+1;
	}

	void print(int tab[]){
		for(int i=0; i<tab.length; i++)
			System.out.print(tab[i]+";");
		System.out.println();
	}

Ale niesetety ciagle dostaje bledy...