Люди говорят, что для помещения в хеш-таблицу требуется амортизированный O (1). Следовательно, n элементов должно быть O (n). Однако для больших n это не так, поскольку, как сказал ответчик, «все, что нужно для удовлетворения ожидаемого амортизированного O (1), - это расширить таблицу и перефразировать все с помощью новой случайной хэш-функции в любое время, когда происходит столкновение».
Итак: каково среднее время вставки n элементов в хеш-таблицу? Я понимаю, что это, вероятно, зависит от реализации, поэтому упомяните, о каком типе реализации вы говорите.
Например, если есть (log n) коллизии с равным интервалом, и каждая коллизия требует O (k) для разрешения, где k - текущий размер хеш-таблицы, то у вас будет это рекуррентное соотношение:
T(n) = T(n/2) + n/2 + n/2
(то есть, вы тратите время на вставку n / 2 элементов, затем вы сталкиваетесь с коллизиями, принимаете n / 2 для разрешения, затем вы делаете оставшиеся n / 2 вставки без коллизий). Это все равно заканчивается O (n), так что да. Но разумно ли это?