Partitionierungsverfahren

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

QuickSort.om
i := first; j := last;
REPEAT
   WHILE gt(pivot, i) DO
      INC(i);
   END;
   WHILE gt(j, pivot) DO
      DEC(j);
   END;
   IF i <= j THEN
      Exchange(i, j, pivot);
      INC(i); DEC(j);
   END;
UNTIL i > j;

*Die Variablen first und last geben den zu sortierenden Bereich an.
 
*Da wir partitionierte Bereiche erneut partionieren möchten, liegen diese nur zu Beginn bei 1 und nofitems.
 
*Der Index pivot zeigt auf das ausgewählte Pivot-Element.
 
*Der Index i wird dann, beginnend von first, aufwärts gezählt, während der Index j heruntergezählt wird.
 
*Alle Schlüssel werden mit dem Pivot-Element verglichen. Dabei suchen wir ein Paar i,j mit Ki <= P und Kj >= P. Dies wird getauscht.
 
*Die Partitionierung ist beendet, sobald i > j, d.h. beide Indizes ``überkreuzt'' sind.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005