... oder TList.CustomSort...
Aber wenn er den Algorithmus selbst entwickeln will, bitte sehr.
Ich denke, das es so geht. N ist die Anzahl der Elemente.
Delphi-Quellcode:
Procedure SortArray (A : TMyArray; N : Integer);
Var
i,j,k : Integer;
H : TArrayElement;
Begin
For i:=0 to N-2 do begin
k := i; // Position des größten Elementes initialisieren
For j := i+1 to N-1 do // Nun wird das größte Elemente im Array [i..N-1]
If A[k] < A[j] Then // gesucht und in k die Position gemerkt
k := j; // '<' mit '>' vertauschen, wenn AUFsteigend sortiert wird.
// k enthält die Position des größten Elementes [i..N]
If i <> k Then Begin // Vertausche A[i] <--> A[k])
H := A[i];
A[i] := A[k];
A[k] := H;
End;
// A[i] enthält nun das größte Element des Arrays [i..N-1]
End;
End;
Dann wird auch vermieden, das kleinste Element immer mitzuschleppen. Es reicht ja, sich nur den Index (hier: k) des bisher kleinsten/größten Elementes zu merken und nach dem Durchlauf das kleineste/größte Element an die Position 'i' zu kopieren, sprich: A[i] mit A[k] zu vertauschen.