Ich würde statt eines Arrays die gute alte doppel verpointerte Liste nehmen.
z.B.
Delphi-Quellcode:
type
pMyrecord=^tMyrecord;
tMyrecord : record
next,last : pMyrecord;
Name : string;
Wert : integer;
end;
var
firstrec,
lastrec,
actrec : pMyrecord;
...
if actrecord^.Name>actrecord^.nextrecord^.Name then Tausche(actrecord);
Ist nur ein grobes Beispiel, da fehlt z.B. die Prüfung auf NIL.
Oder gleich eine (Object)Liste, die bekommt eine Sortierfunktion oder 2 oder 3... und fertig ist die Laube.
Gruß
K-H
Bitte nicht schlagen, ich bin extrem konservativ.