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 }