关于hash表的时间复杂度

NeilHappy 2011-11-30 12:49:49
hash就是散列,甚至再散列。但是我一直对hash表的时间复杂度有个疑问。一个需要存储的字符串,通过hash函数散列到一个相对较短的索引,使得存取速度加快。但为什么存取的时间复杂度能达到常量级O(1)呢?? 查找时搜索索引不需要费时间吗?为什么不是O(n)呢? n是hash表的长度
可不可以这样理解:对一个字符串算出hash码后,这个hash码相当于一个指针,就可以直接指向其存储位置,从而是O(1)的时间复杂度。
...全文
4187 6 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
我一直是这么认为的,希望是这样

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧