delphi自己的,你测试一下快不快?完了别忘记说一声怎样测的?
procedure QuickSort(var A: array of Integer
iLo, iHi: Integer);
var
Lo, Hi, Mid, T: Integer
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
// VisualSwap(A[Lo], A[Hi], Lo, Hi)
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)
// if Terminated then Exit;
end;