Hallo zusammen,
ich habe folgenden Code für einen Quicksort Algo... gefunden.

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); 
}
Ich verstehe aber nicht, wo hier die Abbruchbedingungen sind.
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