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);
}
}
}