社区
数据结构与算法
帖子详情
hash表解决冲突通常用什么方法?
横云断岭
博客专家认证
2010-09-11 02:35:11
书上写着有
1、开放定址法
2、再hash法
3、链地址法
想问下用得比较多的是哪种方法?
...全文
580
18
打赏
收藏
hash表解决冲突通常用什么方法?
书上写着有 1、开放定址法 2、再hash法 3、链地址法 想问下用得比较多的是哪种方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,将没有空间进行保存。
什么是
Hash
冲突
?如何
解决
Hash
冲突
?
1.
Hash
Hash
叫做”散列
表
“,就是把任意长度的输入,通过散列算法,变成固定长度输出,该输出结果是散列值。 其实这种转换是一种压缩映射,散列
表
的空间通常小于输入的空间,不同的输入可能会散列成...2.
解决
Hash
冲
Hash
与
Hash
冲突
及四种
解决
方案
大家都了解过
Hash
Map或者其他有着
hash
表
结构的容器,所以首先我们来谈谈什么是
Hash
,什么是
Hash
冲突
什么是
Hash
?
Hash
表
也称散列
表
,也有直接译作哈希
表
,
Hash
表
是一种特殊的数据结构,它同数组、链
表
以及二叉排序...
Hash
表
的介绍以及哈希
冲突
以及
解决
方法
一 什么是
Hash
表
概念: 哈希
表
(又叫散列
表
)是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到
表
中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,...
Hash
算法、
Hash
冲突
以及
冲突
的
解决
方法
1. 什么是
Hash
...2. 什么是
hash
冲突
? 假设
hash
表
的大小为9(即有9个槽),现在要把一串数据存到
表
里:5,28,19,15,20,33,12,17,10 简单计算一下:
hash
(5)=5, 所以数据5应该放在
hash
表
的第5个槽里;
hash
hash
表
冲突
解决
方法
hash
表
冲突
有两种
解决
方法
: (注明:以下背景文段摘自:http://www.php-internal.com/book/?p=chapt03/03-01-01-
hash
table) 链接法 链接法通过使用一个链
表
来保存slot值的方式来
解决
冲突
,也就是当不同...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章