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

Rispondi quotando