作者fbukevin (Veck)
看板Grad-ProbAsk
标题[理工] 101 交大 DS
时间Thu Jan 17 20:06:16 2013
想请问 8 hash table 这一大题的 identifier comparisons
是指 对每一个index的 key 做比较 吗?
依据(22)题目我建出来的 Table 是
0 1 2 3 4 5 6 7 8 9 10
---------------------------------------------------
| 11 | | 13 | 14 | 2 | 3 | 36 | 18 | 28 | | 21 |
---------------------------------------------------
↑ ↑ ↑
collision h(2) h(3) h(28)
h(36)
(22)题我想说应该是指每一个key都搜寻一次的情况
所以:
11 13 14 18 21 => 因为没碰撞,用h(x) 可以马上找到,各比1次,共5次
2 3 28 => 因为有碰撞,线性向後找两个可以找到,各比3次,共9次
36 => 因为有碰撞,线性向後找三个可以找到,共比4次
Total in 5 + 9 + 4 = 18
但是这样一来第(23)题我就不知道怎麽办了?
我想说 25 and 24 are searched,又是 as the Hash Table in Step (22)
是不是说(22)完成以後还可以再找的到 25 和 24 ?
但是 Hash Table 中没有这两个数
因此要再加入这两个数的意思吗???
if so, 先加入25,会碰撞,所以找到 bucket No. 9
接着加入 24,也会碰撞,所以在线性往後找,到了 No. 10 都没空位所以从头找起
最後放在 No. 1
这样子的话,当我要找 25,就会比较 7 次 (h(25) = 3,3~9共7次)
要找 24,就会比较 11次 (h(24) = 2,2~10 + 0~1共11次)
就变成 7 + 11 = 18 次了!?
但是答案给 C 15 次,是为什麽呢???
==============================================================================
剩下两周,大家加油!!!!!!!!!!!!!!!!!
------------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.46.83.156
1F:→ ab170926:就只是叫你找看看 不用插入 01/17 20:11
2F:推 gnuhcoay:是要搜寻24和25但是找不到的搜寻次数,不是把他们加进去 01/17 20:13
3F:→ fbukevin:但这样不就要把hash table整个都找一遍吗? 01/17 20:17
4F:→ fbukevin:因为根本不在表中,所以算出位置後会一直往後找吧? 01/17 20:18
5F:→ ab170926:如果找到一格空的 就不用往下找了 01/17 20:21
6F:→ fbukevin:对吼!!!! 谢谢两位大大!!!! 01/17 20:23
7F:推 sadkiller:找24是8次喔! 01/17 23:43