PROCEDURE quicksort(Menge M)
BEGIN
waehle Pivotelement x;
partitioniere M in M1 und M2 mit
M1 x < M2 ;
quicksort (M1) ;
quicksort (M2)
END
Bei optimaler Wahl des Pivotelements und bei linearem Aufwand zum
Partitionieren gilt für die Laufzeit t(n) zum Sortieren von n
Zahlen
Würden beide rekursive Aufrufe parallel laufen,
beträgt die Laufzeit
Bei n Prozessoren entstehen Kosten O(n 2) .
Eine Verbesserung ist nur zu erreichen, wenn die
Partitionierung beschleunigt wird.
Folgende Quicksort-Variante verwendet p = 2k
Prozessoren im Hypercube.
Zu Beginn hat jeder
Prozessor Zahlen in seiner lokalen Menge M
gespeichert.
In jeder Iteration wird in jedem Subwürfel ein Pivotelement
zufällig gewählt und durch one-to-all-broadcast
im Subwürfel verbreitet.
PROCEDURE HC_quicksort(Menge M)
BEGIN
sortiere M sequentiell;
FOR i := 0 TO k-1 DO
x := Pivotelement;
partitioniere M in M1 und M2 mit
M1 x < M2 ;
IF BIT (my-id, i) = 0
THEN
verschicke M2 ueber Dimension i;
erhalte C ueber Dimension i;
M := M1 C durch Mischen
ELSE
erhalte C ueber Dimension i;
verschicke M1 ueber Dimension i;
M := M2 C durch Mischen
END
END
END