首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么哈希表在搜索密钥时只查找O(1)时间是O(n)?

为什么哈希表在搜索密钥时只查找O(1)时间是O(n)?
EN

Stack Overflow用户
提问于 2018-02-03 23:42:46
回答 4查看 9.6K关注 0票数 12

从技术上讲,根据我在这里读过的文章,在最坏的情况下,哈希表确实是O(n)时间查找。但我不知道内部力学如何保证它平均是O(1)时间。

我的理解是,给定一些n个元素,理想的情况是有n个桶,这就产生了O(1)空间。这就是我被困的地方。假设我想查找字典中是否有一个键,这肯定要花我O(n)时间。那么,当我想通过使用元素的键的散列值搜索元素是否在哈希表中时,它为什么会产生影响呢?简单地说,使用原始键值进行搜索会给出O(n)时间,而使用散列值则是O(1)时间。为什么会这样呢?

难道我不需要一个一个地查找散列值来判断哪一个匹配吗?为什么散列让我立即知道要检索哪个元素,或者是否存在这样的元素?

EN

Stack Overflow用户

发布于 2020-09-18 06:15:36

我想“哈希”这个词是在吓唬人。在场景后面,哈希表是将键/值对存储在数组中的数据结构。

这里唯一的区别是,我们不关心键值对的位置。这里没有索引。查找数组项O(1)。它与阵列大小无关,与位置无关。您只需输入索引号,并检索项。

所以查了多少时间才能完成。它是O(1)。

在哈希表中,当存储键/值对时,键值将被散列并存储在相应的内存槽中。

代码语言:javascript
运行
复制
{name:"bob"} //name will be hashed

hash(name) = ab1234wq //this is the memory address
[["name","bob"]] // will be store at memory adress ab1234wq

当您查找"name“时,它将被散列,并且作为散列函数的主要特性,它将返回与"ab1234wq”相同的结果。因此,编程引擎将查看这个地址,将看到数组并返回值。如您所见,此操作与数组查找相同。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48603244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档