Site hosted by Angelfire.com: Build your free website today!

Quicksort


Der wohl leistungsfähigste, universal anwendbare, bekannte Sortieralgorithmus ist der Quicksort-Algorithmus. Er ist ein rekursiver Algorithmus vom Typ "Teile und Herrsche". Das heißt er teilt die Eingabedaten in kleine, leicht bearbeitbare, von einander unabhängige Stücke, sortiert diese und setzt sie wieder zusammen.
Es wird zunächst ein beliebiges Element zum betrachten ausgewählt. Danach werden alle Element links von ihm, die größer als es sind mit denjenigen auf der rechten Seite, die kleiner als es sind, ausgetauscht. Dies wird solange wiederholt, bis der Zeiger, der sich von links nähert und der Zeiger, der sich von rechts nähert treffen. Nun wird nur noch das betrachtete Element mit dem Element , auf das der linke Zeiger i weist vertauscht, damit jetzt alle Elemente links des betrachteten kleiner sind und alle Elemente rechts davon größer sind. Derselbe Ablauf wird nun rekursiv auf die beiden Teilfelder angewandt.

Quicksort hat meist eine Laufzeit von O(N  lg N)

void cm_quicksort(itemType feld[], int l, int r) {
     int i, j;
     itemType wert;
     if(r > l) {
         wert = feld[r];
         i = l-1;
         j = r;
         for( ; ; ) {
             while(feld[++i] < wert) ;
             while(feld[--j] > wert) ;
             if(i >= j) break;
             cm_Tausch(feld, i, j);
         }
         cm_Tausch(feld, i, r);
         cm_quicksort(feld, l, i-1);
         cm_quicksort(feld, i+1, r);
     }
}


   Computer    Programmieren (incl. C++ Kurs)    Algorithmen    Bücher    

Zeitschriften    Heavy Metal    Mountainbiking    Meine Katze    

Über mich und die Site    Links    Downloads    Gästebuch    HP mit Umfrage