社区
数据结构与算法
帖子详情
关于hash表的时间复杂度
NeilHappy
2011-11-30 12:49:49
hash就是散列,甚至再散列。但是我一直对hash表的时间复杂度有个疑问。一个需要存储的字符串,通过hash函数散列到一个相对较短的索引,使得存取速度加快。但为什么存取的时间复杂度能达到常量级O(1)呢?? 查找时搜索索引不需要费时间吗?为什么不是O(n)呢? n是hash表的长度
可不可以这样理解:对一个字符串算出hash码后,这个hash码相当于一个指针,就可以直接指向其存储位置,从而是O(1)的时间复杂度。
...全文
4298
6
打赏
收藏
关于hash表的时间复杂度
hash就是散列,甚至再散列。但是我一直对hash表的时间复杂度有个疑问。一个需要存储的字符串,通过hash函数散列到一个相对较短的索引,使得存取速度加快。但为什么存取的时间复杂度能达到常量级O(1)呢?? 查找时搜索索引不需要费时间吗?为什么不是O(n)呢? n是hash表的长度 可不可以这样理解:对一个字符串算出hash码后,这个hash码相当于一个指针,就可以直接指向其存储位置,从而是O(1)的时间复杂度。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
时间复杂度
进行数据的插入删除和查找,但
Hash
表
的
时间复杂度
为什么是 O(1)以及
Hash
冲突怎么形成的(面试版)
要了解
Hash
表
,需要先从数组说起。 数组 数组是最常用的数据结构,创建数组必须要内存中一块连续的空间,并且数组中必须存放相同的数据类型。比如我们创建一个长度为 10,数据类型为整型的数组,在内存中的地址是从 1000 开始,那么它在内存中的存储格式如下。 ...
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章