Hallo Leute,
ich poste hier zum ersten Mal und hoffe ich stelle nicht zu dumme Fragen(auch wenn es die bekanntlich ja nicht gibt...)
Ich habe vor Kurzem angefangen Programmieren mit Java zu lernen und bin noch weit am Anfang meines Lernprozesses. Nun setze ich mich momentan mit der Rekursion auseinander. Das Prinzip ist mir soweit auch klar und ich habe folgendes Programm zum Mischen und Sortieren einer beliebigen Folge erstellt.
Als Ausgabe bekomme ich
3
0
5
6
0
0
0
anstatt einer geordneten Reihenfolge. Dazu erscheint keinerlei Fehlermeldung. Vielleicht kann mir hier ja jemand helfen, wo der Fehler liegt.
Vielen Dank schonmal im Voraus
Ben
ich poste hier zum ersten Mal und hoffe ich stelle nicht zu dumme Fragen(auch wenn es die bekanntlich ja nicht gibt...)
Ich habe vor Kurzem angefangen Programmieren mit Java zu lernen und bin noch weit am Anfang meines Lernprozesses. Nun setze ich mich momentan mit der Rekursion auseinander. Das Prinzip ist mir soweit auch klar und ich habe folgendes Programm zum Mischen und Sortieren einer beliebigen Folge erstellt.
Java:
class ProgrammMischSort{
static int[] Mischen (int[] folge1, int[] folge2){
int n1 = folge1.length;
int n2 = folge2.length;
int n = n1+n2;
int i1 = 0;
int i2 = 0;
int i = 0;
int[] folgeneu = new int [n]; //Initialisiert neues Array mit der Größe n.
while (i1 < n1 & i2 < n2){
if(folge1[i1]<=folge2[i2]){
folgeneu[i] = folge1[i1];
i1 += 1;
i += 1;
} else {
folgeneu[i] = folge2[i2];
i2 += 1;
i += 1;
}
}
if (i1 == n1){ //(i1 == n1) da dies eintritt, wenn die Folge leer ist.
while(i2 < n2){
folgeneu[i] = folge2[i2];
i2 += 1;
i += 1;
}
}
if (i2 == n2){ //wie oben
while(i2 < n2){
folgeneu[i] = folge1[i1];
i1 += 1;
i += 1;
}
}
return folgeneu;
}
static int[] MischSort (int[] folgeMS){
int n = folgeMS.length;
if (n > 1){
int nl = n/2;
int nr = n-nl;
int[] hlinks = new int[nl];
int i = 0;
while(i<nl){
hlinks[i] = folgeMS[i];
i += 1;
}
int[] folgeMSlinks = MischSort(hlinks); // Rekursion
int[] hrechts = new int[nr];
i = 0;
while(i<nr){
hrechts[i] = folgeMS[nl+i];
i += 1;
}
int[] folgeMSrechts = MischSort(hrechts); // Rekursion
return Mischen(folgeMSlinks, folgeMSrechts);
}
else return folgeMS;
}
public static void main(String[] args){
int[] folgeA = {8,3,5,7,9,14,2,6};
int[] folgeB = MischSort(folgeA);
int i = 0;
int n = folgeA.length;
while (i < n){
System.out.println(folgeB[i]);
i += 1;
}
}
}
3
0
5
6
0
0
0
anstatt einer geordneten Reihenfolge. Dazu erscheint keinerlei Fehlermeldung. Vielleicht kann mir hier ja jemand helfen, wo der Fehler liegt.
Vielen Dank schonmal im Voraus
Ben