【发布时间】:2020-09-11 15:58:07
【问题描述】:
如果哈希表是底层的数组,那么为什么插入和删除操作的时间复杂度为 o(1)。 它会被存储为空闲内存插槽而不是背靠背内存插槽吗? 为什么我们不考虑哈希表本身的复制操作?
我尝试搜索一些在线参考资料,但没有找到重要的答案。
【问题讨论】:
标签: arrays data-structures time-complexity runtime hashtable
如果哈希表是底层的数组,那么为什么插入和删除操作的时间复杂度为 o(1)。 它会被存储为空闲内存插槽而不是背靠背内存插槽吗? 为什么我们不考虑哈希表本身的复制操作?
我尝试搜索一些在线参考资料,但没有找到重要的答案。
【问题讨论】:
标签: arrays data-structures time-complexity runtime hashtable
大多数哈希表实现在所谓的摊销时间内插入和删除都具有O(1) 复杂性。这意味着有时一个操作可能确实需要大量时间(例如数量级N - 表中元素的数量),但是在任何给定的插入/删除查询的无限序列中,每个查询的平均操作量将是受一个常数限制。这类似于一个简单的动态数组的插入在摊销时间内是O(1),即使偶尔插入会导致数组的完整副本,这绝对不是一个恒定的时间操作。
【讨论】:
在某些情况下,Hastable 是 linkedlists 或 binary search trees 的数组。
O(1),因为你直接去那里删除密钥。【讨论】: