![]() |
problem mit quicksort
Hallo,
also ich bin grad dabei den quicksort zu programmieren. Hab schon einige Beispiele im i-net zu hilfe genommen und allerhand ausprobiert, aber irgendwie krieg ich den nicht ans laufen. Ich hab immer einen stack overflow, aber die Abbruchbedingung müßte eigentlich stimmen.
Delphi-Quellcode:
procedure TfrmRahmen.quicksort(var Zahlenliste:TZahlenliste; var unterePos:integer; var oberePos:integer);
var Pivot, links, rechts, temp:integer; begin Pivot:=Zahlenliste[anzahl div 2]; links:=unterePos; rechts:=oberePos; While (links < rechts) do begin While (Zahlenliste[links]<Pivot) do links:=links+1; While (Zahlenliste[rechts]>Pivot) do rechts:=rechts-1; // wandern If (links < rechts-1) then begin temp:=Zahlenliste[links]; Zahlenliste[links]:=Zahlenliste[rechts]; // tauschen Zahlenliste[rechts]:=temp; links:=links+1; rechts:=rechts-1; end; end; // while If unterePos<rechts then quicksort(Zahlenliste,unterePos,rechts); If links<oberePos then quicksort(Zahlenliste,links,oberePos); end; { Quicksort } |
Re: problem mit quicksort
Herzlich willkommen in der Delphi-PRAXiS, champion.
Bei deiner Implementierung scheinen dir zwei Flüchtigkeitsfehler unterlaufen zu sein, wenn ich nicht irre:
Delphi-Quellcode:
Freundliche Grüße vom marabu
// ...
While (links <= rechts) do // ... If (links < rechts + 1) then // ... |
Re: problem mit quicksort
Hmm, die Änderungen machen nicht wirklich Sinn.
Der Fehler bleibt hartnäckig der gleiche. |
Re: problem mit quicksort
Die Änderungen machen schon Sinn. Zusätzlich ändere deine Berechnung des Pivot-Elementes noch ab:
Delphi-Quellcode:
marabu
Pivot := Zahlenliste[(unterePos + oberePos) div 2];
|
Re: problem mit quicksort
Ich bevorzuge BubbleSort! *g*
|
Re: problem mit quicksort
schau mal hier :
![]() Issue 37, Sep (223Kb) von 1998 runterladen, da ist Quellcode zu Quicksort in reinstform mit drin. Wunderschön und funktioniert ;-) |
Re: problem mit quicksort
Ich empfehle auch immer wieder diese nette Seite über
![]() |
Re: problem mit quicksort
Ok Danke Leute! Es funzt!
Jetzt werd ich mich mal am Heap und MergeSort versuchen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz