es soll allerdings auch schnellere Sortierverfahren, die stabil sind z.b. BinaryTree...
Die einfachste Variante ist immer noch, einfach einen aufsteigenden Index an das Sortierkriterium anzuhängen, sodass die Sortierung immer eindeutig ist. So bekommt man jedes Sortierverfahren stabil, selbst Quicksort.
Oder wenn du Objekte sortierst (also Pointer), dann kannst du auch einfach gleich die Pointer vergleichen.
Also in der Art:
Delphi-Quellcode:
TRecord = record
Name: String;
Id: Integer;
end;
function Compare(const a, b: TRecord): integer;
begin
Result := StrCompare(a.Name, b.Name);
if (Result = 0) then
Result := b.Id - a.Id;
end;