Я читаю учебник, и он говорит о реализации хэш-списка.Что касается конкретно хеш-таблицы, то в учебнике написано:
Метод сцепления работает достаточно хорошо, если элементы равномерно распределены по позициям массива, что называется равномерным хешированием.Например, если у нас 300 сотрудников и размер массива 100, а если на одну должность приходится около 3 сотрудников, отдайте или возьмите сотрудника, то у нас все еще есть функция поиска, которая работает за O (1) времени, так как не болеепотребуется 3 или 4 сравнения, чтобы найти подходящего сотрудника.
Предполагается, что у нас есть массив (для хеш-таблицы) из 100 элементов, каждый из которых представляет собой связанный список, используемый каксписок столкновений для этого элемента.
Итак, мой вопрос:
В этом параграфе говорится, что, учитывая наш алгоритм хеширования, мы можем искать элемент за O (1) время.Это меня удивляет, потому что чем больше становится ваш набор данных, тем больше у вас будет коллизий и тем больше будут ваши списки коллизий.Итак, списки столкновений будут медленно расти с (n = # сотрудников), но они будут расти.
Я бы подумал, что это заставило алгоритм действовать за O (n) время.
Анализируются ли хеш-таблицы по-разному в зависимости от хеш-функции и ожидаемого размера набора данных?Кажется, что большинство алгоритмических анализов не включают указанный размер набора данных, поэтому меня удивляет и смущает, что в этом случае анализ хеш-таблицы включает ограниченный размер (n).