Si perņ...non ho ben capito come funzionano su Wikipedia left e rigth, dovrebbe tenere conto di quanti elementi ci sono nella parte sinistra dell'array e nella destra?
Come faccio a farlo capire al metodo passandoglielo come parametro?
L'ho cambiato cosģ ma rimangono tanti problemi, come faccio a farlo funzionare se non conosco la dimensione ,a la metą su cui operare....

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