Ho cercato di creare un MergeSort, ma ho un problema, un array di supporto, che chiamo S va fuori range e non capisco perchč:
Volevo cerificare il funzionamento facendo una stampa, ma quello viene dopo, il problema č quello lģ, che non sto capendo a cosa sia dovuto.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); } 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]; //qui c'č l'errore i=i++; } else { S[k]=a[j]; j=j++; } k++; } while(i<=center) { S[k++]=a[i]; i=i++; } while(j<=right) { S[k++]=a[j]; j=j++; } /* for (k =left; k!=right; k++) a[k] =a[k - left]; */ for(int b=0; b<S.length; b++) System.out.print(S[b]+" "); } 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, left,center,right); } } }

Rispondi quotando