Frage/Hilfe zu quicksort
-
Hallo,
wir haben heute an der Uni mit quicksort begonnen. Dazu haben wir folgendes Bsp. gemacht.
Ich blicke eigentlich soweit durch - nur nicht ganz was von Zeile 32 bis 41 passiert.void my_qsort(int *links, int *rechts) { int *ptr1=links; int *ptr2=rechts; int w; int x; x=*(rechts); do { while(*ptr1<x) { ptr1++; } while(*ptr2>x) { ptr2--; } if(ptr1>ptr2) { break; } w=*ptr1; *ptr1=*ptr2; *ptr2=w; } while(ptr1++ <= ptr2--); if(links < ptr2) { my_qsort(links, ptr2); } if(ptr1 < rechts) { my_qsort(ptr1, rechts); } } void drucken(int *arr, int len) { int i; for(i=0; i<len; i++) { printf(" %d ", arr[i]); } } int main() { int test[]={1,5,4,2,5,5,4,2,4,6,9,24,9,5,7}; int len; len=sizeof(test)/sizeof(int); my_qsort(test,test+len-1); drucken(test, len); return 0; }
Danke und ein Frohes Fest
-
Das nennt man Rekursion (Aufruf der Funktion innerhalb derselben).
Nimm dir einen Debugger und ein Blatt Papier, gehe schrittweise durch jeden Funktionsaufruf und schreibe dir die jeweiligen Teilfolgen auf.