Delphi-Quellcode:
procedure DOQuickSort(X:
array of Integer);
procedure QuickSort(
var A:
array of Integer; iLo, iHi: Integer);
var
Lo, Hi : Integer;
Mid, T : Integer;
//angleichen
begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi)
div 2];
repeat
while A[Lo] < Mid
do
Inc(Lo);
while A[Hi] > Mid
do
Dec(Hi);
if Lo <= Hi
then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo
then QuickSort(A, iLo, Hi);
if Lo < iHi
then QuickSort(A, Lo, iHi);
end;
begin
QuickSort(x, Low(x), High(x));
end;
Die Routine einfach angleichen. ist eigendlich eine recht schnelle.
Sollte damit keine probleme geben.