Zitat:
Original von Burgess
Ich hätte auch noch andere Implementierung die wie diese arbeiten.
Wählt man als Eingabedaten mal diese Zahlen: my @ar = qw/26 55 24 93 16 27 89 67 49 90 56/;
und lässt sich vor dem ersten Rekursiven Aufruf das Array ausgeben, stehen die Elemente nicht wie es sein sollte rechts und links vom Pivot (je nach Größe).
Die Ausgabe wird sein: 26 27 24 16 93 55 89 67 49 90 56 bei Pivot 27 |
Hi,
Deine Ausgabe ist
afaik korrekt.
Wie du schon beschrieben hast, sind alle Elemente kleiner (
bzw gleich, je nach Anordnung der Elemente) dem Pivotelement in der linke Teilliste und Elemente welche größer sind, befinden sich in der rechten Teilliste. Diese Ausage trifft bei dem Perl bzw
VB Code zu.
Wobei man natürlich auch die rechte Teilmenge mit Elementen >= Pivotelement und die linke mit Elementen < Pivotelement füllen kann.
Schritt für Schritt:
Code:
array = 26 55 24 93 16 27 89 67 49 90 56; => pivotelement= 27
linker Teil = 26 27 24 16
Also alle Elmente sind <= den Pivotelement
array = 26 27 24 16 => pivotelement = 27
linker Teil = 26 24 16
In diesem Fall sind alle Elemente < Pivotelement im linken Teil.
array = 26 24 16 => pivotelement = 16
linker Teil = 16
=> Sortiert
usw...
Je nachdem wie die Elemente im Array vorliegen, ist der linke Teil < oder <= Pivotelement.
Außerdem wird vorallem bei großen Arrays das Pivotelement errechnet zb.:
(array[0]+array[arraylänge/2]+array[arraylänge-1])/3.