• 全部
  • 问答

一道哈希表用二次探测再散列法解决冲突的问题

ltolll 2008-04-02 10:01:21
设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是( ) 【南京理工大学 2001 一、15 (1.5分)】

A.8 B.3 C.5 D.9
答案为A,为什么我计算出来是D呢?
我的计算步骤如下:
15,38,61,84用哈希函数H(key)=key%11计算后得地址:4,5,6,7
49计算后为5,发生冲突.
用二次探测再散列法解决冲突:
1:(key+1^2)%11=(49+1)%11=6,仍然发生冲突.
2:(key-1^2)%11=(49-1)%11=4,仍然发生冲突.
3:(key+2^2)%11=(49+4)%11=9,不再发生冲突.
得出结果为D
...全文
7919 2 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
si_sky 2012-06-10
答案是 d
回复 1
xuezhishen 2011-04-16
答案是:A

Hi = (H(key) + di)MOD m

di = 1,2,3,....(线性探测再散列)

di = 12,-12,22,-22...(二次探测再散列)

你算算看答案是什么啊! 二次的是选A
回复
AllenAmanda 2010-05-02
这个是正确的。不错
[Quote=引用 4 楼 ltolll 的回复:]
谢谢俩位,m是表长,明白了.
认同craftsman的说法:
用二次探测再散列法处理冲突: Hi = (H(key) + di)MOD m; 其中m为哈希表长度
过程如下:
插入前15,38,61,84的H(key)分别为:4,5,6,7 存放地址为4,5,6,7
49的H(key)为5,发生冲突.
用二次探测再散列法解决冲突:
1:(5+1^2)%14=(5+1)%……
[/Quote]
回复
gxmup1 2010-03-26
正确答案是D
回复
deniselee 2010-01-05
我做出来答案也是 9(二探测再散列)

不过,用线性探测再散列做出来的答案是 8
回复
becomewangpan 2010-01-01
读了这个帖子我对哈希函数有了一定的了解,
不过我想问一下,如果想把平均查找长度限定到2以内该怎么办
回复
duyuanzhu77 2009-09-21
哈希表重点是要掌握哈希地址的的 慢慢看看吧
回复
daydayup1908 2009-09-21
正确答案到底是A还是D呀?
二次探测的序列的公式是什么呢?
回复
unique_sdn 2009-01-19
好帖!
回复
mousear 2008-04-03
答案应该是错的。我前面错误的H(key)用key带进去了。
回复
ltolll 2008-04-03
谢谢俩位,m是表长,明白了.
认同craftsman的说法:
用二次探测再散列法处理冲突: Hi = (H(key) + di)MOD m; 其中m为哈希表长度
过程如下:
插入前15,38,61,84的H(key)分别为:4,5,6,7 存放地址为4,5,6,7
49的H(key)为5,发生冲突.
用二次探测再散列法解决冲突:
1:(5+1^2)%14=(5+1)%14=6,仍然发生冲突.
2:(5-1^2)%14=(5-1)%14=4,仍然发生冲突.
3:(5+2^2)%14=(5+4)%14=9,不再发生冲突.
得出结果为D。

难道答案是错的?
回复
yangsh3002 2008-04-02
顶!
回复
SE_craftsman 2008-04-02
在《算法导论》中,Hash函数实现采用取余法时,哈希表长m即为除数p。一般根据装载因子(开放地址法我一般选0.7,链接法我一般选2-3左右,欢迎大家给我更合理的值)选取合适的槽的大小,通常为一个不接近2的整数次幂的质数。如:53, 97, 193, 389, 769, 1543, 3079, 6151,
12289, 24593, 49157, 98317,
196613, 393241, 786433, 1572869,
3145739, 6291469, 12582917, 25165843,
50331653, 100663319, 201326611, 402653189,
805306457, 1610612741
参考严蔚敏老师书上写的
用二次探测再散列法处理冲突: Hi = (H(key) + di)MOD m; 其中m为哈希表长度
我做题过程如下:
插入前15,38,61,84的H(key)分别为:4,5,6,7 存放地址为4,5,6,7
49的H(key)为5,发生冲突.
用二次探测再散列法解决冲突:
1:(5+1^2)%14=(5+1)%14=6,仍然发生冲突.
2:(5-1^2)%14=(5-1)%14=4,仍然发生冲突.
3:(5+2^2)%14=(5+4)%11=9,不再发生冲突.
得出结果为D。 和楼主一样
回复
mousear 2008-04-02
答案A是正确的
(key+1^2)%14=(49+1)%14=6,仍然发生冲突.
Hi=(H(key) + di) MOD m, i=1,2,…, k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列
这里m=14 不是11
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-02 10:01
社区公告
暂无公告