Code:
void sort(int arr[], int links, int rechts)
{
if (links < rechts)
{
int m = (links+rechts)/2;
sort1(arr, links, m);
sort2(arr , m+1, rechts);
merge(arr, links, m, rechts);
}
}
Ich weiß nicht, ob ich die Rekursion bei Mergesort verstanden habe, deswegen wollte ich einfach mal fragen, ob meine Vorstellung richtig ist.
1: Die Sort1 Methode wird so oft aufgerufen , bis die If-Bedingng nicht mehr stimmt.
2: Der Compiler merkt sich, dass er zuletzt bei sort1 rausgesprungen ist, und beginnt jetzt mit der sort2 Methode, wieder so lange, wie die if-Bedingung true ist.
3: Der Compiler startet jetzt bei der merge methode und arbeitet sich von der letzten Rekursions Ebene nach oben.
Wenn man sich das ganze als Baum vorstellen würde, könnte man doch sagen, dass zuerst der Ast fertig gemacht wird, der ganz links ist, und wenn dann der linke Ast ganz unten ist, wird der nächste gemacht, bis man ganz rechts ist.
Ich hoffe ihr konntet meine Gedankengänge verstehen, und mir sagen, ob ich die Rekursion hier richtig verstanden habe.