Hallo,
ich habe ein Problem bei dem Sortierverfahren 'MergeSort'.
Meine Zahlen werden unsortiert ausgegeben oder es kommen nur Nullen.
Ich denke das die MergeSort MEthode ok ist und es an der Ausgabe liegt.
Musste es als void Methode schreiben, weil es 3 Eingangsparameter hat und die anderen nur ein.
Hier ist meine Methode + merge Methode und eine für die Ausgabe.
[HIGHLIGHT="Java"]
public static void mergeSort(int[] a,int links, int rechts) {
if (rechts <= links) return;
int mitte = (links + rechts) / 2;
mergeSort(a,links,mitte);
mergeSort(a,mitte+1,rechts);
merge(a,links,mitte,rechts);
}
/**
* Methode merge für das Sortierverfahren mergeSort
*/
public static void merge(int[] a,int links,int mitte,int rechts) {
int i = links;
int j = mitte +1;
int k = links;
int[] b = new int[a.length];
for(i = 0; i < a.length; i ++){
b = a;
}
while((i <= mitte) && (j <= rechts)) {
if(b <= b[j]) {
a[k] = b;
k += 1;
i += 1;
}else {
a[k] = b[j];
k += 1;
j += 1;
}
}
while (i <= mitte) {
a[k] = b;
k += 1;
i += 1;
}
}
public static void ausgebenMerge(int[] a) {
for(int i=0; i<a.length; i++) {
System.out.println(a);
}
}
}
[/HIGHLIGHT]
Ausgegeben wird es so:
[HIGHLIGHT="Java"]
case 4:
System.out.println("Ihre Zahlen sortiert: ");
mergeSort(zahlen,0,a-1);
ausgebenMerge(zahlen);
break;
[/HIGHLIGHT]
Zahlen Eingabe erfolgt so:
[HIGHLIGHT="Java"]
// Abfrage für die Anzahl der zu sortierenden Zahlen
a = TastaturEingabe.readInteger("Wieviele Zahlen moechten Sie sortieren: ");
int[] zahlen = new int[a];
[/HIGHLIGHT]
Hat jmd eine Ahnung wo der Fehler liegt?
Gruß
ich habe ein Problem bei dem Sortierverfahren 'MergeSort'.
Meine Zahlen werden unsortiert ausgegeben oder es kommen nur Nullen.
Ich denke das die MergeSort MEthode ok ist und es an der Ausgabe liegt.
Musste es als void Methode schreiben, weil es 3 Eingangsparameter hat und die anderen nur ein.
Hier ist meine Methode + merge Methode und eine für die Ausgabe.
[HIGHLIGHT="Java"]
public static void mergeSort(int[] a,int links, int rechts) {
if (rechts <= links) return;
int mitte = (links + rechts) / 2;
mergeSort(a,links,mitte);
mergeSort(a,mitte+1,rechts);
merge(a,links,mitte,rechts);
}
/**
* Methode merge für das Sortierverfahren mergeSort
*/
public static void merge(int[] a,int links,int mitte,int rechts) {
int i = links;
int j = mitte +1;
int k = links;
int[] b = new int[a.length];
for(i = 0; i < a.length; i ++){
b = a;
}
while((i <= mitte) && (j <= rechts)) {
if(b <= b[j]) {
a[k] = b;
k += 1;
i += 1;
}else {
a[k] = b[j];
k += 1;
j += 1;
}
}
while (i <= mitte) {
a[k] = b;
k += 1;
i += 1;
}
}
public static void ausgebenMerge(int[] a) {
for(int i=0; i<a.length; i++) {
System.out.println(a);
}
}
}
[/HIGHLIGHT]
Ausgegeben wird es so:
[HIGHLIGHT="Java"]
case 4:
System.out.println("Ihre Zahlen sortiert: ");
mergeSort(zahlen,0,a-1);
ausgebenMerge(zahlen);
break;
[/HIGHLIGHT]
Zahlen Eingabe erfolgt so:
[HIGHLIGHT="Java"]
// Abfrage für die Anzahl der zu sortierenden Zahlen
a = TastaturEingabe.readInteger("Wieviele Zahlen moechten Sie sortieren: ");
int[] zahlen = new int[a];
[/HIGHLIGHT]
Hat jmd eine Ahnung wo der Fehler liegt?
Gruß