Uwaga: Wiem, że podobne pytania brzmią już tutaj i na Stackoverflow. Ale wszystkie dotyczą kolizji, o co nie proszę.
Moje pytanie brzmi: dlaczego collision- mniej odnośnika O(1)
w pierwszej kolejności?
Załóżmy, że mam tę tabelę skrótów:
Hash Content
-------------
ghdjg Data1
hgdzs Data2
eruit Data3
xcnvb Data4
mkwer Data5
rtzww Data6
Teraz szukam klucza, k
który h(k)
daje funkcja skrótu h(k) = mkwer
. Ale w jaki sposób wyszukiwanie „wie”, że skrót mkwer
znajduje się na pozycji 5? Dlaczego nie musi przewijać wszystkich klawiszy, O(n)
aby go znaleźć? Skróty nie mogą być jakimś prawdziwym adresem sprzętowym, ponieważ straciłbym możliwość przenoszenia danych. I o ile mi wiadomo, tablica skrótów nie jest sortowana według skrótów (nawet gdyby tak było, wyszukiwanie też by się odbyło O(log n)
)?
W jaki sposób znajomość skrótu pomaga znaleźć właściwe miejsce w tabeli?