Forum: Programmieren allgemein
by mjustin,
10. Jan 2017
Beim TDictionary ist es nicht möglich, aber auch nicht notwendig, da jedes neue Element ohne Sortierung einfach an der Stelle abgelegt wird, die sich aus dem Hashwert ergibt.
Forum: Programmieren allgemein
by mjustin,
9. Jan 2017
Was andererseits zu der Frage führt: was fangen wir nun mit den eingesparten 100-950 Millisekunden an? :-D
Forum: Programmieren allgemein
by mjustin,
9. Jan 2017
O(1) bedeutet Zugriff in konstanter Zeit, unabhängig von der Anzahl (der Elemente die durchsucht werden).
Ich kann es zwar auch nicht in drei Worten erklären (ebenfalls Ü40), aber hier es gibt in der Wikipedia diesen Artikel :
https://de.wikipedia.org/wiki/Landau-Symbole#Beispiele_und_Notation
Bei binärer Suche (TStringList zum Beispiel) hat man O (log n), die Zugriffszeit wächst...
Forum: Programmieren allgemein
by mjustin,
9. Jan 2017
Danke für den Blick über den Tellerrand. Dass ein TDictionary schneller ist ist leicht erklärt - sobald über den Hashwert die Position des Eintrags berechnet wird, ist es nur noch ein Speicherzugriff (wenn man keine Kollision hat). Wegen des Hash-Zugriffs hat TDictionary eine O(1) lookup performance, so sagt man :)
Forum: Programmieren allgemein
by mjustin,
7. Jan 2017
Wäre eine Lösung mit TDictionary (Generics.Collections) nicht wesentlich schneller, wenn die Anzahl wie angegeben in die Hunderttausende geht?