{
"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` ist `public`, im vorgegebenen Gerüst ist sie package-private (`void merge(...)`); falls die Tests/Checker exakt diese Sichtbarkeit erwarten, kann das zu einem Fehler führen.\n\n2. Suggestion\n- Starte bei `mergesort` mit einer Bottom-up-Strategie: denke in “Blockgrössen”, die sich schrittweise verdoppeln, und rufe `merge` für jeweils zwei benachbarte Blöcke auf.\n- In `merge`: nutze ein Hilfsarray der Länge `end - beg` und drei Indizes (für `b`, linken Teilbereich, rechten Teilbereich). Überlege dir die Initialwerte so, dass du bei den Starts der beiden Sequenzen beginnst.\n- Plane in `merge` unbedingt, was passiert, wenn einer der beiden Teilbereiche “aufgebraucht” ist (eine der beiden Indexvariablen erreicht `m` bzw. `end`): ab dann kannst du die restlichen Elemente des anderen Teilbereichs am Stück übernehmen.\n- Prüfe, ob deine Methode am Ende den Inhalt von `b` wieder zurück nach `a` ab Position `beg` kopiert (sonst bleibt `a` unverändert).\n\n3. Code Style\n- Entferne leere Methodenblöcke erst dann, wenn du sie implementierst; aktuell wirkt die Datei wie ein unvollständiges Template.\n- Halte die Sichtbarkeit konsistent mit dem Gerüst (falls nicht absichtlich anders): `merge` nicht unnötig `public` machen, wenn es nur intern gebraucht wird.\n",
"status" : "SUCCESS"
}
}