hash表解决冲突通常用什么方法?

横云断岭
博客专家认证
2010-09-11 02:35:11
书上写着有
1、开放定址法
2、再hash法
3、链地址法

想问下用得比较多的是哪种方法?
...全文
580 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
long894311655 2010-12-14
  • 打赏
  • 举报
回复
不知道hash干嘛用的,表示从没用过……
delge 2010-11-16
  • 打赏
  • 举报
回复
如果是简单数据处理,那没有关系,
如果涉及到大批量数据处理,文件读取等等,要用链地址法。
否则会极大的影响执行效率。
具体问题不同,要具体分析。
ischarles 2010-11-03
  • 打赏
  • 举报
回复
再hash法是开放地址法的一种
一般而言,
开放地址法适于小元素的hash表,即元素占用的空间是一个字(word)或更少
当表中的元素都非常大时,用链地址法效率更高
yzhj2005 2010-09-20
  • 打赏
  • 举报
回复
学习了!
libinfei8848 2010-09-17
  • 打赏
  • 举报
回复
不在乎内存的话,开拉链吧
AAA20090987 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ccltiancai 的回复:]
- -从来都是用链式的路过
[/Quote]

+1
ccltiancai 2010-09-16
  • 打赏
  • 举报
回复
- -从来都是用链式的路过
air_snake 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 superdullwolf 的回复:]

假设给你100个桶,放你们班级的试卷,你就按分数放到桶号里。
假设给你50个桶,你每个桶再分一下左右(再哈希)。
假设给你33个,你就分左中右,外边再丢一个(再哈希)。
假设给你20个,你每个桶要放5个,你可以分5格(再哈希),也可以顺序放,二分放,无序放。
带来的复杂度不同,理论上都可以,你自己想吧,适合那种就哪种,和分数分布有关,和你愿意接受的工作量有关。
以上是均匀分布。

……
[/Quote]

精辟的言论啊。放到桶外也行。服了。
Java2King 2010-09-15
  • 打赏
  • 举报
回复
用hash桶
超级大笨狼 2010-09-15
  • 打赏
  • 举报
回复
假设给你100个桶,放你们班级的试卷,你就按分数放到桶号里。
假设给你50个桶,你每个桶再分一下左右(再哈希)。
假设给你33个,你就分左中右,外边再丢一个(再哈希)。
假设给你20个,你每个桶要放5个,你可以分5格(再哈希),也可以顺序放,二分放,无序放。
带来的复杂度不同,理论上都可以,你自己想吧,适合那种就哪种,和分数分布有关,和你愿意接受的工作量有关。
以上是均匀分布。

要是大家都及格了是另一种办法。。。
要是不可能有人超过90分是另一种办法。。。
要是大家在70分正态分布是另一种办法。。。。。
yuxizhou 2010-09-15
  • 打赏
  • 举报
回复
根据情况吧,我用过一次链地址法法
Joe-xXx 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 himetale 的回复:]
看元素的飽和度,如果低於1/4,就用再hash。優點是比較簡單,缺點是效率低。

如果高於1/4就用拉鏈法,微軟的.net framework用的就是拉鏈法。
優點很多,缺點是寫出來比較複雜
[/Quote]

其它在符合的情况,可以采用组合的方式
熊熊大叔 2010-09-13
  • 打赏
  • 举报
回复
链地址法效率较高
HELLO345T 2010-09-13
  • 打赏
  • 举报
回复
其实我觉得比较常用的是链地址法~~~~主要是对链表的操作比较方便
HimeTale 2010-09-12
  • 打赏
  • 举报
回复
看元素的飽和度,如果低於1/4,就用再hash。優點是比較簡單,缺點是效率低。

如果高於1/4就用拉鏈法,微軟的.net framework用的就是拉鏈法。
優點很多,缺點是寫出來比較複雜
x642458 2010-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xero_123 的回复:]

一般是这样如果可以保证,当前的hash表可以完全保存下当前的数据量的话,会用开发地址法,否则的话连接地址的方法比较好,因为在开发地址法中,如果当前的hash表已经满了的话,在来元素进行hash,将没有空间进行保存。
[/Quote]
maoxing63570 2010-09-11
  • 打赏
  • 举报
回复
再hash法
但是通常函数的计算量应该不是很大,如果很大的话效果不好,大量的时候用来做计算
xero_123 2010-09-11
  • 打赏
  • 举报
回复
一般是这样如果可以保证,当前的hash表可以完全保存下当前的数据量的话,会用开发地址法,否则的话连接地址的方法比较好,因为在开发地址法中,如果当前的hash表已经满了的话,在来元素进行hash,将没有空间进行保存。

33,008

社区成员

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

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