quicksort Problem



  • Wir haben von der Schule die Aufgabe bekommen den Quicksort Algorithmus in c++ zu implementieren, leider habe ich ein kleines Problem damit.. seht euch folgendes an ->

    unsortiert:

    41.67.34.0.69.24.78.58.62.64.
    

    nach dem sortieren:

    0.34.24.41.58.62.64.67.69.78.
    

    als ich noch keine Zeiger benutzt habe hat es funktioniert, aber jetzt (mit Zeiger) funktioniert es nicht mehr

    hier der Code

    void qsort(int *arr, int lo, int hi)
    {
    	int *l = &arr[lo], *r = &arr[hi];
        int *p = &arr[(lo+hi)/2];
    
        while (l <= r)
        {    
    		while (*l < *p) l++;
            while (*r > *p) r--;
            if (l <= r)
            {
                swap(*l, *r);
                l++; r--;
            }
        }
    
    	if (lo < r-arr) qsort(arr, lo, r-arr);
    	if (l-arr < hi) qsort(arr, l-arr, hi);
    }
    
    // Aufruf mit: qsort(arr, 0, MAX_SIZE-1);
    

    sieht jemand den Fehler?



  • Laß Dir doch mal jeweils am Anfang der Funktion ausgeben, was er sortiert und welches Pivot-Element er verwendet. Vielleicht kannst dadran was sehen.


Anmelden zum Antworten