Thema: Quicksort
Einzelnen Beitrag anzeigen
Alt 10.03.09, 18:57   #6 (permalink)
Binäru$
 
Registriert seit: 16.05.08
Binäru$ Leistung: Facit NTK
Likes: 0
Standard RE: Quicksort

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.
Binäru$ ist offline   Mit Zitat antworten
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61