n'Abend,
sitzt jetzt schon eine geraume Weile vor meinem Quicksort Algo und komm einfach nicht auf den Fehler...
Das ganze (array mit 100 Zufallszahlen von 1-1000 zur ausgabe im Stringgrid)) ist erst nach mehreren Klicks vollständig sortiert, ist ja irgendwie nicht Sinn der Sache.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Sortieren2Click(Sender: TObject);
var Zl, Zr, i :integer;
begin
Zr:=100; Zl:=1;
quicksort (Zl,Zr);
for i:=1 to 100 do begin Feld2.cells[i-1,0] := inttostr (i); Feld2.cells[i-1,1] := inttostr (Zahlen2[i]); end;
end; |
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:
| procedure quicksort (var Anfang, Ende: Integer); var Mitte, Zl, Zr : Integer; begin
Zl:=Anfang; Zr:=Ende; Mitte:=(Anfang+Ende) div 2;
repeat
while Zahlen2[Zl]<Zahlen2[Mitte] do
Zl:=Zl+1;
while Zahlen2[Zr]>Zahlen2[Mitte] do Zr:=Zr-1;
if Zl<=Zr then begin tausche (Zahlen2[Zl], Zahlen2[Zr]); Zl:=Zl+1; Zr:=Zr-1; end;
until Zr<Zl;
if Anfang<Zr then quicksort (Anfang,Zr);
if Zl<Ende then quicksort (Zl, Ende);
end; |
vielleicht habt ihr ja ne Ahnung was ich da Falsch gemacht habe...
Danke schonmal,
Tobi.