Einzelnen Beitrag anzeigen

FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#10

AW: Stringlist und tobject zum Xten mal

  Alt 7. Mai 2011, 10:43
So eine TStringlist ist schon sehr brauchbar und praktisch. Langsamer als ein Array ist sie eigentlich nicht, wenn man davon absieht, das beim Einfügen ein wenig Speicheroverhead anfällt.

Die normale Vorgehensweise wäre:
Daten in eine TStringList schreiben, sortieren, die obersten 5 Elemente nehmen.

Du kannst dir einen Algorithmus schreiben, der ein wenig schneller ist, so z.B.:

Delphi-Quellcode:
Const
  MaxCount = 5;

Var
  i, j, n : Integer;
  max : Array [1..MaxCount] Of Integer;

begin
  n := 0;
  for i := 1 to 5 do max[i] := -maxint;

  for I := 0 to MyList.Count-1 do
    for j := 1 to 5 do
      if max[j] < MyList[i] then begin
        move (max[j], max[j + 1], (Length(max) - j) * SizeOf(max[1]));
        max[j] := MyList[i];
        break;
      end;
end;
Nachteil: Wenn MaxConst mal steigt, wird dier Algorithmus doch wieder langsamer. Nun könnte man dann die Suche in Max durch eine Binärsuche ersetzen, aber die widerum ist suboptimal, wenn MaxConst klein ist.
Das Bild hängt schief.
  Mit Zitat antworten Zitat