【发布时间】:2016-01-13 18:26:08
【问题描述】:
让我们有一个包含 n 个键的哈希表,每个键都有一个只有一个值的桶。 假设我们要查找哈希表中不存在的键,那么这个操作的最坏情况时间复杂度是多少?
在我看来,这将是 O(n)。散列函数必须检查它的所有键才能确定给定的键在散列中不存在。
你怎么看?我对吗?
【问题讨论】:
让我们有一个包含 n 个键的哈希表,每个键都有一个只有一个值的桶。 假设我们要查找哈希表中不存在的键,那么这个操作的最坏情况时间复杂度是多少?
在我看来,这将是 O(n)。散列函数必须检查它的所有键才能确定给定的键在散列中不存在。
你怎么看?我对吗?
【问题讨论】:
这取决于实现。我希望时间复杂度为 O(1),因为从本质上讲,哈希表不会遍历元素来查找元素,而是根据哈希方法直接在内存中建立索引。唯一超过 O(1) 的时间是当它需要重新调整内存大小或遇到冲突时。当然,除此之外还有很多小细节以及影响事物的散列算法之间的差异。这是一个很好的线程,可以查看更多信息:
【讨论】: