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
Lesezeichen