【发布时间】:2013-03-30 15:19:18
【问题描述】:
根据this,在哈希表中搜索的时间复杂度是O(1)。
但是,如果发生碰撞,那么显然这应该是 O(1) + 一些东西。
我的问题是:
当你说
get(someKey)
从哈希表中,哈希函数应用于 someKey,并直接从该位置检索数据。
但假设Seperate Chaining 用于解决冲突。并想象 someKey 和 someOtherKey 在我们的散列函数应用于它们之后具有相同的输出。说它是值“25”。
所以当我说
get(someKey)
我将从位置“25”获取数据。这使它成为 O(1)。伟大的。
但是当我说
get(someOtherKey)
现在 someOtherKey 已链接到 someKey 所在的位置。
当对 someOtherKey 应用散列时,我得到 25。
如何获得我需要的价值?内部是什么?还有别的表吗?算法流程如何?是否有其他表用于存储所有碰撞?
谢谢。我希望我的问题很清楚!
【问题讨论】:
-
这是一个很好的资源:@987654323@
标签: hash hashmap hashtable hashcode hash-collision