Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Problem mit MergeSort - Java
Problem mit MergeSort - Java
justanothermacianer
21.05.12
09:27
Hallo zusammen
Muss mich für die Schule mit Sortieralgorihmen befassen und hab grade ein kleines Verständnisproblem mit der Implementierung von MergeSort in Java.
public class Mergesort {
public static int[] intArr = { 16, 23, 14, 7, 21, 20, 6, 1, 17, 13, 12, 9,
3, 19 };
public int[] sort(int l, int r) {
if (l < r) {
int q = (l + r) / 2;
sort(l, q);
sort(q + 1, r);
merge(l, q, r);
}
return intArr;
}
private void merge(int l, int q, int r) {
int[] arr = new int[intArr.length];
int i, j;
for (i = l; i <= q; i++) {
arr[i] = intArr[i];
}
for (j = q + 1; j <= r; j++) {
arr[r + q + 1 - j] = intArr[j];
}
i = l;
j = r;
for (int k = l; k <= r; k++) {
if (arr[i] <= arr[j]) {
intArr[k] = arr[i];
i++;
} else {
intArr[k] = arr[j];
j--;
}
}
}
public static void main(String[] args) {
Mergesort ms = new Mergesort();
int[] arr = ms.sort(0, intArr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.println(i + 1 + ": " + arr[i]);
}
}
}
Die grundsäzliche Vorgehensweise von MergeSort ist mir klar, was ich jedoch nicht verstehe: Wo wird festgelegt, dass die beiden Integer Werte l und r den kleinsten bzw. größten Indexwert des Arrays darstellen sollen? Anhand dieser Werte erfolgt ja die Teilung..
Also das Programm läuft korrekt, aber mir ist nicht klar wieso. L und r wurden doch gar keine Werte zugewiesen
Für eventuelle Denkanstöße wäre ich sehr dankbar
„Mac vs PC debates make me want to throw up. Does your OS of choice work for you? Great, problem solved!“
Hilfreich?
0
Kommentare
jgraux
21.05.12
10:12
Mal abgesehen davon, dass der Code nicht sonderlich gut strukturiert ist, übergibst Du doch in Deiner Main in der zweiten Zeile die Arraygrenzen
int[] arr = ms.sort(0, intArr.length - 1);
Von daher verstehe ich die Frage nicht ganz...
Hilfreich?
0
justanothermacianer
21.05.12
10:41
Mein Fehler, hab mich bei dem Beispiel hier so auf sort und merge festgebissen das ich Main komplett überlesen habe
Danke
„Mac vs PC debates make me want to throw up. Does your OS of choice work for you? Great, problem solved!“
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Hohe Softwareanforderungen: Neues USB-C-Zubehör...
Apple kündigt Systemupdates für heute Abend an ...
Tim Cooks Jahresgehalt – und die Vergütung der ...
Doch keine finalen Versionen: Apple gibt zweite...
iOS 18.2, macOS 15.2 und Co.: Apple stopft viel...
Gurman zum Release des neuen Apple TV, HomePods...
PIN-Code erraten: Dauer
Mac OS X: 25 Jahre Aqua, 25 Jahre Dock