Es wird oft gesagt, dass die Hash-Tabellensuche in konstanter Zeit abläuft: Sie berechnen den Hash-Wert, der Ihnen einen Index für eine Array-Suche gibt. Dabei werden Kollisionen ignoriert. im schlimmsten Fall landet jedes Objekt im selben Bucket und die Suchzeit wird linear ( ).
Gibt es Bedingungen für die Daten, die dazu führen können, dass die Hash-Tabellensuche wirklich ? Ist das nur im Durchschnitt, oder kann eine Hash-Tabelle Worst-Case-Lookup haben?O ( 1 )
Anmerkung: Ich komme hier aus der Perspektive eines Programmierers. Wenn ich Daten in einer Hash-Tabelle speichere, handelt es sich fast immer um Zeichenfolgen oder einige zusammengesetzte Datenstrukturen, und die Daten ändern sich während der Lebensdauer der Hash-Tabelle. Ich schätze zwar Antworten über perfekte Hashes, aber sie sind niedlich, aber anekdotisch und aus meiner Sicht nicht praktisch.
PS Follow-up: Für welche Art von Daten sind Hash-Tabellen-Operationen O (1)?