Mergesort

Status
Nicht offen für weitere Antworten.

Houly

Mitglied
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ß
 

0x7F800000

Top Contributor
mergeSort(a,mitte+1,rechts);
Vollbremsung. Wenn sich diese "+1" "-1"-Indexfehler in den code einmal reinschleichen, kriegt man die nie weder raus, weder mit debugger noch sonstwie.

=> linken index immer INKLUSIV, den rechten dagegen immer EXKLUSIV übergeben

d.h wenn du 8 Objekte sortieren willst, im array also indizes:
Code:
01234567

hast, dann teilst du das so auf:

Code:
[0,8)
[0,4) [4,8)
[0,2) [2,4) [4,6) [6,8)
[0,1) [1,2) [2,3) [3,4) [4,5) [5,6) [6,7) [7,8)

und nicht irgendwie mit beiden indizes inklusiv, also irgendsowas bescheuertes:
Code:
[0,7]
[0,3][4,7]
...???
 
[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]

Kann es sein das du sowieso nur Nullen im Array hast und die sortierst?
Und (rein aus Neugier) warum machst du ein MergeSort über Arrays?
 

Houly

Mitglied
wie wärs, wenn du das "neue" array leweils zurückgeben würdest?

Gut über die erste for-Schleife kopier ich den inhalt aus array a ja ins hilfsarray, aber selbst wenn ich das weglassen würde, müsste er ja das haupt array a ausgeben, oder?


Vollbremsung. Wenn sich diese "+1" "-1"-Indexfehler in den code einmal reinschleichen, kriegt man die nie weder raus, weder mit debugger noch sonstwie.

=> linken index immer INKLUSIV, den rechten dagegen immer EXKLUSIV übergeben

Versteh ich nicht ganz. Tut mir leid bin noch Anfänger!
Die "mergeSort" Methode wurde vom Professor vorgegeben, habe nur den Rest
geschrieben.


Kann es sein das du sowieso nur Nullen im Array hast und die sortierst?
Und (rein aus Neugier) warum machst du ein MergeSort über Arrays?

Nein, nachdem man die Anzahl der Zahlen eingegeben hat, werden Random Zahlen generiert. Habe ich jetzt oben im Code nicht mit aufgeführt!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Mergesort (aber anders) Java Basics - Anfänger-Themen 2
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
H Mergesort aufwand berechen Java Basics - Anfänger-Themen 5
I MergeSort iterativ mit Stacks Java Basics - Anfänger-Themen 13
L Methoden Mergesort methode Java Basics - Anfänger-Themen 4
K MergeSort Stackoverflow Java Basics - Anfänger-Themen 5
K Mergesort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
T MergeSort rekursiv programmieren Java Basics - Anfänger-Themen 8
A Rekursion (anhand von Mergesort) nachvollziehen Java Basics - Anfänger-Themen 4
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
M Mergesort Aufgabe große Probleme Java Basics - Anfänger-Themen 9
P Mergesort Probleme Java Basics - Anfänger-Themen 4
I Mergesort mit ArrayList Java Basics - Anfänger-Themen 4
C Mergesort Java Basics - Anfänger-Themen 4
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
N MergeSort Java Basics - Anfänger-Themen 8
M MergeSort - Zahlen verschwinden Java Basics - Anfänger-Themen 2
P MergeSort mit Liste Java Basics - Anfänger-Themen 4
M MergeSort rekursiv Java Basics - Anfänger-Themen 2
B Methoden Natural Mergesort Java Basics - Anfänger-Themen 2
P Mergesort || 2 SetLists mischen Java Basics - Anfänger-Themen 2
P Mergesort (zyklische Liste) Java Basics - Anfänger-Themen 2
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
N MergeSort mit Liste Java Basics - Anfänger-Themen 8
P Probleme bei codierung von MergeSort Java Basics - Anfänger-Themen 4
M MergeSort - Threads in Anwendung bremsen alles! Java Basics - Anfänger-Themen 4
M Mergesort Java Basics - Anfänger-Themen 11
C MergeSort Problem Java Basics - Anfänger-Themen 5
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
B mergesort/rekursion Java Basics - Anfänger-Themen 9

Ähnliche Java Themen


Oben