AutoFeedback API

Result 450c30b5-5328-47aa-9d66-91d74be6b16b

{
  "llm" : {
    "feedback" : "# Exercise: mergesort\n\n### Correctness\n- Die Aufgabe gibt als Rahmen/Startcode für `mergesort(double[] a)` ausdrücklich „bottom up mergesort“ vor; deine Implementierung macht stattdessen eine rekursive Top-down-Variante (`splitAndMerge`). Das erfüllt diese Anforderung nicht.\n\n### Suggestion\n- Schau dir nochmal an, was „bottom up“ bedeutet: Du startest mit Blockgrösse 1 und *verschmilzt iterativ* benachbarte Blöcke (1→2→4→8…), ohne Rekursion. Überlege dir eine äussere Schleife für die Blockgrösse und eine innere Schleife, die jeweils `merge(a, beg, m, end)` für passende `beg/m/end`-Tripel aufruft.\n\n### Code Style\n- `splitAndMerge` ist im Kontext der vorgegebenen Übung (bottom-up) zusätzlicher/unerwarteter Code und macht die Lösung schwerer mit dem Übungsziel zu vergleichen; falls du bottom-up umsetzt, wird die Methode überflüssig.\n- In `merge` ist die Vergleichsrichtung inkonsistent zum Beispiel (`a[k] < a[j]` statt `a[j] <= a[k]`): funktional ist das ok, aber wenn Stabilität (Reihenfolge gleicher Elemente) relevant wäre, wäre `<=` auf der linken Seite die typische Wahl.\n",
    "status" : "SUCCESS"
  }
}