Hatte das gleiche Problem und in der
RTL leider nichts gefunden. Habe mir dann eine einfache BubbleSort Implementation in meine Array-Helper Klasse eingebaut:
Delphi-Quellcode:
class procedure TArrayHelper.Exchange<T>(var A: TArray<T>; Index1, Index2: Integer);
var
Temp: T;
begin
Temp := A[Index1];
A[Index1] := A[Index2];
A[Index2] := Temp;
end;
class procedure TArrayHelper.BubbleSort<T>(var A: TArray<T>; const Comparer: IComparer<T>);
var
I: Integer;
Done: Boolean;
begin
repeat
Done := true;
for I := Low(A) to High(A) - 1 do
begin
if (Comparer.Compare(A[I], A[I + 1]) > 0) then
begin
Exchange<T>(A, I, I + 1);
Done := false;
end;
end;
until Done;
end;
Ist bei vielen Werten natürlich fürchterlich langsam. Wollte bei Gelegenheit mal MergeSort implementieren.