{
"llm" : {
"feedback" : "Exercise: mergesort\n\n1. Correctness\n- `mergesort(double[] a)` ist leer und sortiert das Array nicht wie gefordert.\n- `merge(double[] a, int beg, int m, int end)` ist leer und führt das Zusammenführen der zwei bereits sortierten Teilbereiche nicht aus.\n- Die Signatur von `merge` weicht vom Template ab (`public` statt package-private `void merge(...)`), was je nach Tests/Visibility-Vorgaben zu einem Fehlschlagen führen kann.\n\n2. Suggestion\n- Starte bei `merge` mit einem Hilfsarray der Länge `end - beg` und nutze drei Indizes (für b sowie für die beiden Bereiche in a), die du passend initialisierst: einer zeigt auf den Beginn des gelben Bereichs, einer auf den Beginn des grünen Bereichs, und einer auf die aktuelle Zielposition in `b`.\n- Überlege dir die Schleifenbedingung so, dass du nur solange Elemente vergleichst, wie beide Teilbereiche noch Elemente übrig haben; danach musst du den Rest des noch nicht aufgebrauchten Bereichs ohne weitere Vergleiche anhängen.\n- Kopiere am Schluss den gefüllten Bereich aus `b` zurück nach `a` ab Position `beg` (achte darauf, dass alle Elemente von `beg` bis `end-1` überschrieben werden).\n- Für `mergesort`: Denke an “bottom-up”: beginne mit Blockgröße 1 und verdopple sie, und merge jeweils benachbarte Blöcke; am Rand kann ein “Restblock” übrig bleiben, der separat gemerged werden muss.\n\n3. Code Style\n- Die Methoden sind komplett leer; füge zumindest Schritt-für-Schritt Code ein (auch wenn er noch nicht perfekt ist), damit man Logik und Invarianten nachvollziehen kann.\n- Die Sichtbarkeit von `merge` ist im Template ohne `public`; bleib konsistent mit der Vorgabe, damit Tests/Packagesichtbarkeit nicht unerwartet Probleme machen.\n",
"status" : "SUCCESS"
}
}