![]() |
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:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr. |
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