MergeSort java, problem
Hej swec!
Jag håller på med en mergesort i java som fungerar löjligt långsamt och ibland inte alls. Kan nån titta på den och förklara varför?
Här är koden:
public class MergeSort{
public static int[] sort(int[] x){
if(x.length <= 1){
return x;
}
int[] left = new int[(x.length/2)];
int[] right = new int[(x.length/2)];
int[] result = new int[(x.length)];
int middle = (x.length/2);
for(int a =0; a<=middle-1;a++){
left[a]=x[a];
}
for(int b=0; b<=middle-1; b++){
right[(b)]=x[middle+b];
}
left=sort(left);
right=sort(right);
result=merge(left, right);
return result;
}
public static int[] merge(int[] left, int[] right){
int[] result = new int[left.length+right.length];
int leftpos =0;
int rightpos=0;
int resultpos=0;
while(right.length >rightpos || left.length >leftpos){
if(left.length >leftpos && right.length>rightpos){
if(left[leftpos]<=right[rightpos]){
result[resultpos]=left[leftpos];
// System.out.println("result["+resultpos+"]= left["+leftpos+"]");
leftpos++;
resultpos++;
}else{
result[resultpos]=right[rightpos];
// System.out.println("result["+resultpos+"]=right["+rightpos+"]");
rightpos++;
resultpos++;
}
}else if (right.length >rightpos){
result[resultpos]=right[rightpos];
resultpos++;
rightpos++;
}
}
return result;
}
}
Tack på förhand.
/theWeasel
edit: La upp en gammal version först, fixat nu...