Один ответ на связанном странице:
вставки всегда будет O (1), если даже не распределен (если мы сделать связанный список на столкновение), но удаление будет O (п) в самый плохой кейс.
Это не очень хороший ответ. Обобщенный ответ на временную сложность для HashMap придет к подобному заявлению, как Wikipedia article on hash tables:
Time complexity
in big O notation
Average Worst case
Space O(n) O(n)
Search O(1) O(n)
Insert O(1) O(n)
Delete O(1) O(n)
адресовать свой вопрос, как хэш-карты хранятся в памяти: Есть целый ряд «ковши», которые хранят значение средний случай, но должен быть расширен до некоторого списка, когда происходит хеш-столкновение. Хорошие объяснения хэш-таблиц в статье Википедии, this SO question и this C++ example.
Временная сложность приведенной выше таблице, как это потому, что в среднем случае, хэш-карта выглядит и сохраняет отдельные значения, но столкновения делают все О (п) в худшем случае, когда все ваши элементы совместно используют ведро, и поведение похоже на реализацию списка, которую вы выбрали для этого случая.
Обратите внимание, что существуют специальные реализации, которые описывают здесь наихудшие случаи, также описанные в статье в Википедии, но каждый из них имеет и другие недостатки, поэтому вам нужно выбрать лучшее для вашего случая использования.
Это зависит от реализации - http://en.wikipedia.org/wiki/Hash_table дает некоторые варианты. –
Хорошо, но как бы мы контролировали реализацию? По моему мнению, все, что мы делаем, - это использовать ключевое слово, например 'map' или' dict', чтобы создать хэш-карту, а затем использовать что-то вроде 'myMap [" key "] =" value "' для заполнения карты. – steveclark
Я не понимаю, к чему вы пытаетесь добраться. Если вы спрашиваете, как реализуется одна конкретная платформа/библиотека, вы должны сказать, какой из них вам интересен. Если вы только заботитесь о реализации Python, вы должны использовать тег 'python' и указать, что в вопросе ... –