Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
26. Jan 2012
Darum hab ich auch nur die Erklärung für "stabil" geschrieben.
Für "nicht stabil" gibt es keine definierte Reihenfolge/Erklärung, abgesehn von dem "nicht".
Für deinen Fall gibt es zwei/drei Lösungen.
- vor dem Sortieren bei allen Elementen einen Zufallswert hinterlegen, welcher im Gleichheitsfall genommen wird (somit ändert sich dieses nicht mehr, wärend des sortierens)
- wärend des...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
26. Jan 2012
Wiki mein Quicksort sei ein "nicht-stabiler Sortieralgorithmus".
Somit hast du deinen Zufall sowieso schon automatisch integriert. :angle2:
stabil = gleich Werte bleiben in der Reihenfolge, wie sie vor der Sortierung schon war.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
26. Jan 2012
So, hier erstmal der Comparer mit einer ordentlichen Typkonvertierung
function ListSortCompetitors(Item1, Item2: Pointer): Integer;
var
C1, C2: TodCompetitor;
begin
C1 := TObject(Item1) as TodCompetitor;
C2 := TObject(Item2) as TodCompetitor;
Result := CompareValue(C2.GameParty.PlayerList.Count, C1.GameParty.PlayerList.Count);
if Result = 0 then
Result := Random(3) - 1;