Haftungsausschluss: Ich weiß, dass es hier und bei Stackoverflow bereits ähnlich klingende Fragen gibt. Aber es geht nur um Kollisionen, was ich nicht verlange.
Meine Frage ist: Warum ist kollisions weniger Nachschlagen O(1)
in erster Linie?
Nehmen wir an, ich habe diese Hashtabelle:
Hash Content
-------------
ghdjg Data1
hgdzs Data2
eruit Data3
xcnvb Data4
mkwer Data5
rtzww Data6
Jetzt suche ich nach dem Schlüssel, k
den die Hash-Funktion h(k)
gibt h(k) = mkwer
. Aber woher "weiß" die Suche, dass sich der Hash mkwer
auf Position 5 befindet? Warum muss es nicht durch alle Tasten scrollen O(n)
, um es zu finden? Die Hashes können keine echten Hardwareadressen sein, da ich die Fähigkeit verlieren würde, die Daten zu verschieben. Und soweit ich weiß, ist die Hashtabelle nicht nach den Hashes sortiert (selbst wenn dies der Fall wäre, würde die Suche auch dauern O(log n)
)?
Wie hilft es, einen Hash zu kennen, um den richtigen Platz in der Tabelle zu finden?