Hallo zusammen,
ich habe folgenden Code für einen Quicksort Algo... gefunden.
Ich verstehe aber nicht, wo hier die Abbruchbedingungen sind.Code:void quick_sort(int *a, int n) { int p = a[n / 2]; int *l = a; int *r = a + n -1; while (l <= r) { while (*l < p) l++; while (*r > p) r--; if (l <= r) { int t = *l; *l++ = *r; *r-- = t; } } quick_sort(a, r - a + 1); quick_sort(a, r + n - l); }
Das Array hat ja eine gewisse Größe (Anzahl von Elementen) worauf der übergebene int* a zeigt. die Zeile
while(*l < p) l++
kann doch meiner Meinung nach unendlich, zumindest bis weit über das Array Ende hinaus laufen. Es wird doch nur abgefragt, ob der Wert, worauf der Zeiger l zeigt kleiner ist als der Wert p..... ebenso die Zeile
while(*r >p) r--
Oder habe ich hier etwas nicht richtig verstanden ?
für eine Info wäre ich Euch dankbar.
Siro







Zitieren

Lesezeichen