Wenn ein Wörterbuch / eine Karte als implementiert ist HashMap
, hat es eine Best-Case-Komplexität von O(1)
, da es im besten Fall genau die Berechnung des Hash-Codes des Schlüsselelements zum Abrufen erfordert, wenn keine Schlüsselkollisionen vorliegen.
Eine Hash-Karte kann eine Worst-Case - Laufzeitkomplexität von O(n)
wenn Sie eine Menge von Schlüsselkollisionen oder eine sehr schlechten Hash - Funktion, da es in diesem Fall zu einer linearen Abtastung des gesamten Arrays abbaut , die die Daten enthalten.
Bedeutet O(1)
auch nicht sofort , es bedeutet, dass es eine konstante Menge hat. Die Auswahl der richtigen Implementierung für ein Wörterbuch kann also auch von der Anzahl der Elemente in der Sammlung abhängen, da sehr hohe konstante Kosten für die Funktion viel schlimmer sind, wenn nur wenige Einträge vorhanden sind.
Aus diesem Grund werden Wörterbücher / Karten für verschiedene Szenarien unterschiedlich implementiert. Für Java gibt es mehrere verschiedene Implementierungen, C ++ verwendet Rot- / Schwarzbäume usw. Sie haben sie basierend auf der Anzahl der Daten und basierend auf ihrer besten / durchschnittlichen / schlechtesten Laufzeiteffizienz ausgewählt.
the growth
Komplexität mit verschiedenen Eingaben zu messen . Es geht nicht darum, wie viele Operationen Sie haben. Beispiel: Mit 1 Wert haben Siex
Sekunden, mitn
Werten benötigen Sieroughly
x*n
Sekunden => O (n).x
könnte viele Operationen zusammen sein.