Hi. It's fast sorting. near 80 array changing. I think it will be faster than yours near 5 times.
type
TArray = array [1 .. 49, 0 .. 1] of Double;
var
ffff: integer;
procedure qSort(var A: TArray; min, max: Integer);
var i, j: Integer;
supp, X, x1: Double;
begin
supp:=A[max-((max-min) div 2)][1];
i:=min; j:=max;
while i<j do
begin
while A[i][1]<supp do i:=i+1;
while A[j][1]>supp do j:=j-1;
if i<=j then
begin
X := A[i][1];
x1 := A[i][0];
A[i][1] := A[j][1];
A[i][0] := A[j][0];
A[j][1] := X;
A[j][0] := x1;
i:=i+1; j:=j-1;
inc(ffff);
end;
end;
if min<j then qSort(A, min, j);
if i<max then qSort(A, i, max);
end;
procedure [login to view URL](Sender: TObject);
var A: TArray;
i: integer;
s: string;
begin
for I := 1 to 49 do
A[i][1] := random;
ffff := 1;
qSort(A, 1, 49);
for I := 1 to 49 do
s := s + ' ' + FloatToStr(A[i][1]);
ShowMessage(IntToStr(ffff));
{}
end;