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

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
...全文
10011 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
si_sky 2012-06-10
  • 打赏
  • 举报
回复 1
答案是 d
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
  • 打赏
  • 举报
回复 1
这个是正确的。不错
[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

33,007

社区成员

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

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