Этот вопрос проверяет знание базовой теории алгоритмов и принципов работы хэш-таблиц.
Поиск в хэш-таблице занимает в среднем O(1), потому что хэш-функция позволяет сразу перейти к предполагаемой ячейке. Однако в худшем случае при большом количестве коллизий поиск может стать O(n). Такие ситуации редки при хорошей хэш-функции и правильно выбранном размере таблицы.
Хэш-таблица — структура данных, в которой доступ к элементу строится по вычисленному хэшу ключа.
Цель хэширования — минимизировать количество коллизий и обеспечить быстрый поиск.
Средний случай:
Сложность: O(1)
При хорошей хэш-функции элементы распределены равномерно.
Количество коллизий минимально, поэтому поиск почти мгновенный.
Худший случай:
Сложность: O(n)
Возникает, если все ключи попали в одну корзину (например, плохая хэш-функция).
Тогда приходится перебрать все элементы внутри списка/цепочки.
Используются хорошие хэш-функции.
Таблица автоматически расширяется при заполнении (load factor).
Коллизии распределяются равномерно.
Небольшая проверка времени поиска:
d = {i: i*2 for i in range(1000000)}
x = d[123456] # O(1) в среднем
Поиск в хэш-таблице обычно O(1) и только в теории может стать O(n).