Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Stringlist und tobject zum Xten mal (https://www.delphipraxis.net/160309-stringlist-und-tobject-zum-xten-mal.html)

FredlFesl 7. Mai 2011 09:43

AW: Stringlist und tobject zum Xten mal
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz