{
"llm" : {
"feedback" : "Exercise: mergesort\n\n## 1. Correctness\n- `mergesort(double[] a)` ist nicht implementiert, obwohl im Skeleton vorgesehen.\n- `merge(double[] a, int beg, int m, int end)` führt aktuell keinen Merge durch: Es werden keine Elemente aus den beiden vorsortierten Teilbereichen in `b` übernommen und `b` wird auch nicht zurück nach `a` kopiert.\n\n## 2. Suggestion\n- Schau dir für `merge` zuerst die drei Indizes aus der Aufgabenbeschreibung/Abbildung an: einer für die Position in `b`, und je einer, der durch den linken (`beg...m-1`) und rechten (`m...end-1`) Bereich läuft. Überlege dir, wie du sie initialisierst.\n- Baue dann eine Schleife, die so lange läuft, wie in beiden Teilsequenzen noch Elemente vorhanden sind, und jeweils das kleinere der beiden aktuellen Elemente nach `b` schreibt (und den passenden Zeiger weiterschiebt).\n- Danach bleibt genau eine Seite “übrig”: Kopiere die restlichen Elemente dieser Seite ebenfalls noch nach `b` (ohne Vergleiche).\n- Am Schluss muss der zusammengeführte Block aus `b` wieder ab Position `beg` zurück in `a` kopiert werden (achte darauf, dass die Zielindizes stimmen).\n- Für `mergesort` (bottom-up): Denke in “Blockgrössen”, die bei 1 starten und sich jeweils verdoppeln; pro Durchlauf mergst du benachbarte Blöcke dieser Grösse über das ganze Array.\n\n## 3. Code Style\n- In beiden Methoden stehen noch TODO-Kommentare; sobald du implementierst, entferne/ersetze sie durch aussagekräftige Kommentare, die die Invarianten/Abschnitte erklären (z.B. “merge in b”, “rest kopieren”, “zurückkopieren”).\n- `b` wird aktuell nur erzeugt, aber nie verwendet; nach der Implementierung sollte jede Variable einen klaren Zweck erfüllen.\n",
"status" : "SUCCESS"
}
}