Hallo Leute,
ich sitze gerade an der Implementierung für einen Mergesort (Klausurvorbereitung) und komme einfach nicht weiter.
Ich finde keinen Fehler im Code, aber Java schmeißt mir gerade meine Rekursion um die Ohren
Also exakt die Zeilen("
sort(field, left, MID);
sort(field, MID+1, right);
")
an denen kann es aber eigentlich nicht liegen. Der Rest erscheint mir auch stimmig, ich weiß momentan nicht weiter hat einer von euch vllt. einen Lösungsansatz, oder eine Ahnung woran es leigen kann?
Ich habe mir bereits andere Implementierungen angeguckt, finde aber auch da nichts..
Eine konkrete Fehlermeldung kann ich leider nicht geben, beim Compilieren t noch alles, erst beim ausführen krieg ich dann Fehler...
Vielen Dank schonmal fürs Helfen...
ich sitze gerade an der Implementierung für einen Mergesort (Klausurvorbereitung) und komme einfach nicht weiter.
Ich finde keinen Fehler im Code, aber Java schmeißt mir gerade meine Rekursion um die Ohren
Also exakt die Zeilen("
sort(field, left, MID);
sort(field, MID+1, right);
")
an denen kann es aber eigentlich nicht liegen. Der Rest erscheint mir auch stimmig, ich weiß momentan nicht weiter hat einer von euch vllt. einen Lösungsansatz, oder eine Ahnung woran es leigen kann?
Ich habe mir bereits andere Implementierungen angeguckt, finde aber auch da nichts..
Eine konkrete Fehlermeldung kann ich leider nicht geben, beim Compilieren t noch alles, erst beim ausführen krieg ich dann Fehler...
Vielen Dank schonmal fürs Helfen...
Code:
public class mergesort {
public static void merge(int[]field){
sort(field, 0, field.length-1);
}
public static void sort(int[]field, int left, int right){
if(left<right){
final int MID= (left+right)*2;
sort(field, left, MID);
sort(field, MID+1, right);
int[]tmp=new int[right-left+1];
for(int i=left;i<=MID;++i){
tmp[i-left]=field[i];
}
for(int i=MID+1; i<=right;++i){
tmp[tmp.length-i+MID]=field[i];
}
int iL=0;
int iR=tmp.length-1;
for(int i=left;i<=right;++i){
field[i]=tmp[iL]<tmp[iR]? tmp[iL++]:tmp[iR++];
}
}
}
public static void main(String[]args){
int[]field=new int[]{0,1,2,3,43,24,23,324,12,213,10,47,70,245,6,78,9,8,4,34};
merge(field);
for(int i=0;i<field.length;++i){
System.out.println(field[i]);
}
}
}