Согласно этому, временная сложность поиска в хеш-таблице составляет O(1).
Однако, если есть столкновение, то, очевидно, это должно быть O (1) + что-то.
Мой вопрос:
Когда ты говоришь
get(someKey)
из хеш-таблицы функция хеширования применяется к someKey, и данные извлекаются непосредственно из этого места.
Но представьте, что для разрешения коллизий используется раздельная цепочка. И представьте, что someKey и someOtherKey имеют одинаковый вывод после применения к ним нашей функции хеширования. Скажите, что это значение «25».
Поэтому, когда я говорю
get(someKey)
Я получу данные из локации "25". Что делает его O (1). Здорово.
Однако, когда я говорю
get(someOtherKey)
Теперь someOtherKey связан с someKey.
Когда хеширование применяется к someOtherKey, я получаю 25.
Как мне получить нужную мне ценность? Какие внутренности? Есть какой-то другой стол? Как работает алгоритм? Есть ли какая-то другая таблица для хранения всех коллизий?
Спасибо. Надеюсь мой вопрос понятен!