Ho il mio codice mergesort, perņ c'č qualche cosa che non va, non va la mia istruzione che ho commentato nel codice e che si trova nel metodo Merge, come scriverla in java?

codice:
public class MergeSort
{
	
	public static void main(String [] args)
	{
		int [] a={3,6,5,7,9,8,0,5};
		MSort(a,0,a.length-1);
		for(int i=0; i<a.length; i++)
		System.out.print(a[i]+" ");
		
	}
	
	
	public static void merge(int [] a, int left,int center, int right)
	{
		int [] S=new int[a.length];
		int i= left;
		int j=center+1;
		int k=0;
	
		
		while(i<center && j<right)
		{
			if(a[i]<a[j])
			{
				S[k++]=a[i];
				i=i++;
			}
			else{
				S[k++]=a[j];
				j=j++;
			}
			
		}

		while(i<center)
		{
			S[k++]=a[i];
			i=i++;
		}
		
		while(j<right)
		{
			S[k++]=a[j];
			j=j++;
		}
		
		/*Questa non va
		
		for(k=left; k<=right; k++)
		a[k]=S[k-left];*/
		
		/*Lo pseudocodice č 
		for(k=left to right) do
		a[k]=S[k-left];
		
		Mi dą un arrayindexoutofbounds....*/
		
		
	}

	
	
	public static void MSort(int [] a,int left, int right)
	{
		
		if(left>=right) return;
		
			
			int center=(left+right)/2;
				MSort(a,left,center);
				MSort(a,center+1,right);
				merge(a, left,center,right);
			
		

		
	
	}
}