Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Aufgabe 11.2
guten tag miteinander,
möchte mir jemand helfen ich habe etwas Verständnisprobleme mit den beiden sort-Methoden.
merge läuft funktioniert, ich hab die Methode rekursiv implementiert was ja nicht verkehrt ist oder?
bei sort bin ich mir nicht ganz sicher wie man das Sortieren umsetzen soll, wegen diesen ein-elementigen Listenobjekten.
Hat jemand einen Tipp für mich für die Methode merge?
Ich kann mir irgendwie nicht vorstellen wie ich die rechte in die linke Liste verknüpfen soll.
Und für was braucht man die Methode ElementSave?
Danke
Du arbeitest ja mit verketteten Datenstrukturen und sollst keine neue Liste erstellen sondern die rechte liste in die linke liste verschmelzen. Das heißt du kannst dir die Zeigerreferenzen der Listenelemente zu nutze machen.
ElementSave benötigst du nicht für merge, wird in der Aufgabenstellung auch nicht erwähnt, ElementSave ist eine Hilfsklasse für die Sort-Methode…
Bei mir läuft jetzt alles, falls jemand fragen hat, kann ich vielleicht die ein oder andere beantworten, falls ichs noch seh
Hey ich habe auch bisschen Verständnisprobleme bei den sort Methoden. Hättest du vielleicht noch einen Tipp für mich wie du drauf gekommen bist?
Danke
Niemand?
Ich verstehe auch nicht wie es mit den einelementigen Listen gemeint ist und was genau welche sort Methode tut.
Hab da auch ne ganze Weile lang rumprobiert, aber viel eher weil ich die anfängliche Aufgabenstellung, auf der Seite vom Theorieteil nicht richtig gelesen hatte
das hat auch seinen Sinn wieso man erst den Baum aufmalen soll und dann die Aufgabe lösen, wenn man genauer hinsieht, hilft der wirklich gut beim verstehen der Rekursion in sort und vielleicht wieso man eineelementige Listenobjekte benutzt.
In der Aufgabenstellung ist ja erwähnt, dass sort, die eigentliche rekursive Funktionalität von mergeSort ist.
Hab mir zwei Hilfsmethoden dazu geschrieben, und mittels Rekursion und unter Verwendung von merge die Listenelemente zusammengefügt.
merge ist dazu da zwei sortierte Listen zusammenzufügen, also gilt das auch für Listen mit nur einem Element.
Wenn du dir die rekursion bildlich vorstellst:
sort( 3 - 6 - 4 - 5)
// \\
merge(sort( 3 - 6 ) , merge(sort ( 4 - 5))
// \\
merge(3 , 6) merge( 4 , 5)
mittels sort (ElementSave next, int n) kannst du den zu sortierenden Bereich einer Liste festlegen und steigst rekursiv soweit durch aufteilen ab, bis du jeweils ein ein-elementiges Listenobjekt bekommst, das beim aufsteigen gefügt wird…
Ich hoffe, dass ist etwas hilfreich…