AutoFeedback API

Result 43d35f28-7353-48cb-8cdc-96efe40a6e04

{
  "llm" : {
    "feedback" : "# Exercise: mergesort\n\n### Correctness\n- In `merge(...)` ist `i` als Index für die linke Teilsequenz unglücklich initialisiert: Du setzt `i = beg`, aber verwendest `k` als Index in `b` ab `0`. Das ist zwar konsistent, aber du musst dann überall sicherstellen, dass die Vergleichs-/Kopierlogik wirklich die Bereiche `a[beg..m-1]` und `a[m..end-1]` abdeckt; aktuell ist das nur indirekt korrekt und sehr fehleranfällig, weil `i` nicht “relativ” zu `b` ist.\n- In der Haupt-Vergleichsschleife nutzt du `if (a[i] < a[j]) ... else ...`. Damit ist bei Gleichheit (`a[i] == a[j]`) immer das rechte Element zuerst dran. Falls in der Aufgabe “stabil” implizit erwartet wird (bei Merge/Mergesort oft so), verletzt das die Stabilität.\n\n### Suggestion\n- Überlege dir bei `merge` eine klare Rollenverteilung der drei Indizes: einer soll in `b` laufen (typisch ab `0`), und die beiden anderen sollen genau an den Starts der beiden Teilbereiche beginnen (also “Start links” und “Start rechts”). Dann prüf: Zeigen diese beiden Indizes wirklich immer auf das nächste noch nicht kopierte Element ihrer jeweiligen Teilsequenz?\n- Falls Stabilität gefordert/gewünscht ist: Überlege, was bei Gleichheit passieren soll, damit Elemente aus der linken Teilsequenz ihre relative Reihenfolge behalten. Das hängt an einem sehr kleinen Detail in der Vergleichsbedingung.\n\n### Code Style\n- Deine Kommentare sind hilfreich, aber ein Teil davon ist “nachgestellter Fliesstext” am Dateiende; besser direkt bei den relevanten Schleifen platzieren oder als kurze Blockkommentare vor den Abschnitten, damit es wartbar bleibt.\n- Kleinigkeit: In der Vergleichsschleife schreibst du mehrfach `b[k] = ...; i/j++; k++;`. Das lässt sich lesbarer machen, wenn du die gemeinsamen Schritte (z.B. `k++`) weniger repetitiv formulierst.\n",
    "status" : "SUCCESS"
  }
}