hallo,
ich habe eine Klasse Playercollection die Player in einer liste speichert
Eine eigenschaft der Klasse Player ist der integerwert score.
Nun wollte ich die einzelnen Spieler nach den Punkten(score) sortieren.
Dafür habe ich gedacht ich speichere die Player in einem array und wende auf dieses array ein sortierverfahren an.
Allerdings komme ich nun etwas durcheinander, wenn ich den quicksort anwende da ich immernur die punkte ändere aber nicht die player genau.
Wie sortiere ich also die punkte und nicht nur den punktestand?
Delphi-Quellcode:
procedure TPlayerCollection.SortScores(
var field :
Array of TPlayer) ;
var i : integer;
begin
getField(field);
//feld änhält Playerobjekte
quicksort(field, 0, self.Count-1);
end;
procedure TPlayerCollection.quicksort(
var Field:
array of TPlayer; ilow,
ihigh: integer);
var
Low, High, Mid, T: Integer;
begin
Low := iLow;
High := iHigh;
Mid := Field[(Low + High)
div 2].score;
repeat
while Field[Low].score < Mid
do Inc(Low);
while Field[High].score > Mid
do Dec(High);
if (Low <= High)
then
begin
T := Field[Low].score;
Field[Low].score := Field[High].score;
Field[High].score := T;
Inc(Low);
Dec(High);
end;
until Low > High;
if High > iLow
then QuickSort(Field, iLow, High);
if Low < iHigh
then QuickSort(Field, Low, iHigh);
end;
oder würdet ihr mir ein anderes Suchverfahren empfeheln, da es sich um höchstens 10 Playerobjekte handelt die sortiert werden müssten.