先看1.
26 38 17 33 48 35 25 共7个数据
因此装载因子(Load factor)为:7/13 约等于0.54,故选C
Load factor的计算是:所有数据总量/Hash表的表长
上述表长应等于(或大于)13,因为采用的Hash函数是key mod 13
但有点疑问:
你的题目给出的hash表很不清晰,主要问题是:第一行是不是给全了,貌似应该0,2...12,而不是0..9.第二行数据与第一行地址的对应关系也看不出来.如果只是0..9,那么表长应该是10,装载因子就是:
Load factor = 7/10 = 0.7 最接近的答案似乎就是D了.
但根据推断,如果表长为10,地址为0..9的话,
按照题目所说采用开放地址法线性探测(using open addressing ,liner probing),那么似乎不管以怎样的数据插入顺序,都无法得到26 38 17 33 48 35 25这样的数据顺序.
所以,1.的答案我认为应该是C.
再看2.
由于前面所说,hash表的数据和地址对应关系很不清晰,所以这里只能假定表长为13,地址为0,1,2...12.
表中38 mod 13 = 12,与它冲突的只有25(25 mod 13 = 12).
但25已经占据了最右侧的地址,认为这个地址应该就是地址12.
所以,38是在25之后插入hash表的,它只能从地址0开始找空位置.
38又在26之后,所以26应该也是在38之前插入hash表的.
这样,38其实对应的地址应该是1.
在查找38的时候也是类似的过程,需要比较3次:
1.根据38的hash值:12,查找地址12,发现不是;
2.继续到表头找(12已经是表尾了),发现地址0是26,不对;
3.继续到下一个地址1,发现值为38,于是查找成功.
因此,应该选C.