社区
数据结构与算法
帖子详情
关于hash表的时间复杂度
NeilHappy
2011-11-30 12:49:49
hash就是散列,甚至再散列。但是我一直对hash表的时间复杂度有个疑问。一个需要存储的字符串,通过hash函数散列到一个相对较短的索引,使得存取速度加快。但为什么存取的时间复杂度能达到常量级O(1)呢?? 查找时搜索索引不需要费时间吗?为什么不是O(n)呢? n是hash表的长度
可不可以这样理解:对一个字符串算出hash码后,这个hash码相当于一个指针,就可以直接指向其存储位置,从而是O(1)的时间复杂度。
...全文
4321
6
打赏
收藏
关于hash表的时间复杂度
hash就是散列,甚至再散列。但是我一直对hash表的时间复杂度有个疑问。一个需要存储的字符串,通过hash函数散列到一个相对较短的索引,使得存取速度加快。但为什么存取的时间复杂度能达到常量级O(1)呢?? 查找时搜索索引不需要费时间吗?为什么不是O(n)呢? n是hash表的长度 可不可以这样理解:对一个字符串算出hash码后,这个hash码相当于一个指针,就可以直接指向其存储位置,从而是O(1)的时间复杂度。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happyperson
2011-11-30
打赏
举报
回复
你可以看看java里面hashmap的实现,里面用的是数组哦
Zephyrzzz
2011-11-30
打赏
举报
回复
查找索引当然会很快,不过只有无冲突的hash table复杂度才是O(1),一般是O(c),c为哈希关键字冲突时查找的平均长度。
Usopp_Dream
2011-11-30
打赏
举报
回复
o⑴的原因是离散后,下标对应关键字
oo
2011-11-30
打赏
举报
回复
就是2楼说的这样
catmonkeyxu
2011-11-30
打赏
举报
回复
hash表的桶一般是数组,计算出来的hash值一般是整数,可直接作为数组下标,然后……你懂的
keeya0416
2011-11-30
打赏
举报
回复
我一直是这么认为的,希望是这样
微软面试100题系列之高清完整版PDF文档[带目录+标签]by_July
本微软面试100题系列,共计11篇文章,300多道面试题,截取本blog索引性文章:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦:http://blog.csdn.net/v_july_v/article/details/6543438,中的第一部分编辑而成,涵盖了数据结构、算法、海量数据处理等3大主题。 闲不多说,眼下九月正是校招,各种笔试,面试进行火热的时节,希望此份微软面试100题系列的PDF文档能给正在找工作的朋友助一臂之力! 如果读者发现了本系列任何一题的答案有问题,错误,bug,恳请随时不吝指正,你可以直接评论在原文之下,也可以通过私信联系我。 祝诸君均能找到令自己满意的offer或工作,谢谢。July、二零一二年九月二十日
Hash
表
的
时间复杂度
为什么是O(1)?
@TOC 要了解
Hash
表
,需要先从数组说起 数组 数组会在内存中申请连续的地址空间,且数组中各元素类型必须一致 上图假设数组元素为整型,由于整形占据4各字节的内存空间,所以上图每个数组的内存地址从下标0开始,下标每增加1,地址就增加4 所以只要知道了数组的下标,就可以计算得到数组的地址,比如元素4,我们知道数组起始地址后,只要用起始地址+下标*4就可以知道元素4的地址,所以访问数组元素的
时间复杂度
为O(1) ......
Hash
表
的
时间复杂度
为什么是O(1)?
【
hash
表
的
时间复杂度
】
hash
表
的
时间复杂度
为什么是O(1)?能回答这个问题的答案之前,肯定必须先了解
hash
表
的数据结构。如下图所示: 如图中清晰可知,
hash
表
是基于数组+链
表
的实现的。数组在内存中是一块连续的空间,只要知道查找数据的下标就可快速定位到数据的内存地址,即数组查找数据的
时间复杂度
为O(1)。
hash
表
的存储结构是<key,value>的形式,数...
哈希
表
与
时间复杂度
哈希
表
散列
表
(
Hash
table,也叫哈希
表
),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到
表
中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列
表
。 给定
表
M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在
表
中的地址,则称
表
M为哈希(
Hash
)
表
,函数f(key)为哈希(
Hash
) 函数。 哈希
表
是使用 O(1)O(1)
时间复杂度
进行数据的插入删除和查找,但
哈希
表
时间复杂度
及空间复杂度评估
未来,随着技术的发展,哈希
表
将会有更多的应用场景和优化策略出现,为数据存储和处理带来更多的可能性。在实际应用中,需要根据具体需求选择合适的哈希
表
类型和优化策略,以达到最佳的性能
表
现。哈希
表
的平均
时间复杂度
主要取决于哈希函数的选择和执行操作的数量。例如,通过选择合适的哈希函数和算法,可以降低哈希
表
在处理大量数据时的平均
时间复杂度
;同时,通过合理的内存布局和优化数据结构,可以提高哈希
表
的空间利用率。哈希
表
是一种基于哈希技术的数据结构,通过将键值对映射到一段固定大小的内存空间中,实现快速查找、**和删除操作。
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章