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.


Anmelden zum Antworten