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 4.4 Eingangsarray verändern?
Hey, die Frage kam im Testfall-Thread auf, aber hat meiner Meinung nach genügend Relevanz für einen eigenen Thread:
Werden die Arrays, die zum Test an die Methode übergeben werden wiederverwendet?
D.h. darf
merge
das übergebene array verändern?
Ich zitiere mich hier mal selbst aus dem anderen Thread:
Ich kann dir die Frage zwar nicht beantworten, aber das ist an sich auch nicht so wichtig :-p
Folgendes: Wir sollen die Zahlen erst ab dem Index, ab dem wir sie auch verschmelzen sollen, ausgeben. Und dafuer ist keine Modifikation des Arrays noetig.
Weshalb die Frage nicht weiter relavant ist.
Auch wenn du’s schon geloescht hast:
Da du die Methode rekursiv implementierst, wird, sobald du das Array am Anfang klonst, auch in jedem rekursiven Aufruf das Array geklont, nur eben mit weniger Elementen, aber es wird immer nur um eine konstante Anzahl an Elementen verringert, daher weshalb dein merge() ∈ O(n^2).
Also es ging erstmal darum, das es quadratisch wird, wenn man das Array klont, was man ja nicht machen sollte. Und ja merge ist O(n).
Zudem ich bin jetzt mal der Meinung, dass das ganze kein Divide & Conquer Algorithmus ist. Du musst! naemlich saemtliche Zahlen vergleichen, sodass du sicher sagen kannst, deine Loesung stimmt. Daher bezweifle ich, dass du das ganze effektiv aufteilen kannst, da sich die Teilprobleme gegenseitig beieinflussen wuerden. (womit der Divide-Part fehle)
Nimm beispielsweise {1, 1, 2, 2, 2,4} als eine Eingabe und noch eine andere { 1,2,2,3,4,5}. Wie willst du das generell aufteilen? Bei der Haelfte? Dann gings beim 2. aber du hast beim. 1. ein Problem (ergaebe dann vielleich { 2,2, 4,4} anstatt {2,4,2,4}).