Hallo an alle!
Ich soll eine iterative Variante von MergeSort mithilfe von Stacks in Pseudocode angeben.
Ich kenne MergeSort nur rekursiv und "verstehe" dementsprechend nur diese Variante.
Mein Problem fängt schon damit an, dass ich mir die iterative Variante nicht richtig vorstellen kann. Wie wird der Array geteilt, wenn der Algorithmus denn noch überhaupt so funktioniert ?
Ich bin anfangs wohl etwas naiv vorgegangen und dachte mir, dass ich mein Array teile und die rechte Hälfte im Stack ablege, dann teile ich mein linkes Teilarray und lege dessen rechte Hälfte wieder im Stack ab, usw bis nur noch ein Element im Array ist.
Dabei hat sich mir allerdings die Frage gestellt, ob meine rechten Hälften auch als Hälften im Stack abgelegt werden oder wie ein einem Array die einzelnen Arrayelemente pro Stackstelle abgelegt werden.
Jetzt gibt es zwei weitere Probleme: wie bearbeite ich die Hälften in meinem Stack und wie wende ich "merge" an, um meine Elemente am Ende wieder sortiert ausgeben zu können.
Das war so mein erster Gedanke, aber wie gesagt, ich kann nicht ganz nachvollziehen wie der Algorithmus iterativ und erst recht nicht, wie er mit Stacks funktionieren soll.
Ich hoffe mir kann das jemand erklären bzw helfen.
Ich soll eine iterative Variante von MergeSort mithilfe von Stacks in Pseudocode angeben.
Ich kenne MergeSort nur rekursiv und "verstehe" dementsprechend nur diese Variante.
Mein Problem fängt schon damit an, dass ich mir die iterative Variante nicht richtig vorstellen kann. Wie wird der Array geteilt, wenn der Algorithmus denn noch überhaupt so funktioniert ?
Ich bin anfangs wohl etwas naiv vorgegangen und dachte mir, dass ich mein Array teile und die rechte Hälfte im Stack ablege, dann teile ich mein linkes Teilarray und lege dessen rechte Hälfte wieder im Stack ab, usw bis nur noch ein Element im Array ist.
Dabei hat sich mir allerdings die Frage gestellt, ob meine rechten Hälften auch als Hälften im Stack abgelegt werden oder wie ein einem Array die einzelnen Arrayelemente pro Stackstelle abgelegt werden.
Jetzt gibt es zwei weitere Probleme: wie bearbeite ich die Hälften in meinem Stack und wie wende ich "merge" an, um meine Elemente am Ende wieder sortiert ausgeben zu können.
Das war so mein erster Gedanke, aber wie gesagt, ich kann nicht ganz nachvollziehen wie der Algorithmus iterativ und erst recht nicht, wie er mit Stacks funktionieren soll.
Ich hoffe mir kann das jemand erklären bzw helfen.