Delphi-Quellcode:
procedure TForm1.QuickSort(von, bis: Integer);
var l, r, v, hilf: integer;
begin
l := von;
r := bis;
v := Feld[(l + r) div 2];
while l <= r do
begin
while (Feld[l] < v) do
l := l + 1;
while (Feld[r] > v) do
r := r - 1;
If l <= r then
begin
hilf := Feld[r];
Feld[r] := Feld[l];
Feld[l] := hilf;
l := l + 1;
r := r - 1;
end;
end;
If von < r then QuickSort(von, r);
If bis > l then QuickSort(l, bis);
end;
Versuch es mal so.
Dein Fehler ist gewesen, dass Du mit dem Feld[v] vergleichst.
Das Feld[v] kann sich aber in der while do Schleife ändern,
es sollte sich aber dort nicht ändern.
Deshalb ist es besser vor der while Schleife den Wert von Feld[v] zu speichern
und damit zu vergleichen.
Ist in Wikipedia aber auch so beschrieben.
Hier noch ein Quicksort mit Repeat until:
http://www.dsdt.info/tipps/?id=380
Grüße
Klaus