全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案
题目1:一个大小为11的散列表,散列函数为H(key)=key mod 11,采用线性探测冲突解决策略。如果现有散列表中仅有的5个元素均位于下标为奇数的位置,问:该散列表的平均不成功查找次数是多少?
-
A. 6/11
-
B. 1
-
C. 16/11
-
D. 不确定
解答:如上图,第一行是索引,第二行是我们存的数据,为了方便起见,这里只是用最简单的数。
然后假如我们要查的值算出来的hash是偶数,则只需要一次查找,因为都是空的。假如我们要查的值算出来的hash是奇数,也需要查两次,因为当前不是,则需要往右再查一次。总共11个数,偶数位置有6个,奇数有5个,所以最后的不成功平均查找次数为(6+2*5) / (6+5) 选C
题目2:在一个大小为K的空散列表中,按照线性探测冲突解决策略连续插入散列值相同的N个元素(N<K)。问:此时,该散列表的平均成功查找次数是多少?
-
A. 不确定
-
B. K/N
-
C. (N+1)/2
-
D. 1
因为是求成功的查找次数,所以与空白位置和大小K无关,我们假设我们的表如下图:
一共N个数,假设通过某种计算hash以后位置都在3这里:
当找33的时候,只需要找1次,找23的时候,需要找两次,以此类推,找71的时候,需要找N次。
平均要找 (1+2+3+……+N)/N ,采用高斯先生使用的加法运算,((1+N)*N/2)/N = (N+1)/2
选C
题目3:当采用线性探测冲突解决策略时,非空且有空闲空间的散列表中无论有多少元素,不成功情况下的期望查找次数总是大于成功情况下的期望查找次数。
-
A. √
-
B. ×
选√。这是废话。因为比如我们要找一个数,这个数存在,我们就一定能找到,但是如果不存在,我们就必须一直往下找,直到找到空位才行。所以相比于不成功的查找,成功的查找不需要一直找到空位。
题目4:直接映射需要存储 个短整型数字,大约是多少字节空间?
-
A. 40KB
-
B. 40MB
-
C. 40GB
-
D. 300GB
短整型即short型,一个占两个字节。
1KB = 1024B,1024KB = 1MB = 1048576B
4*10^10B ≈ 40 * 1024 * 1024 * 1024B = 40GB
选C。