假设我们有一个带有10个桶的哈希表,并且使用线性探测使用散列函数初始输入符号S1到S7。搜索不存在的项目所需的最大比较次数是多少? 散列图可以解释为:
Index
KEY
0 - - S7
1 - - S1
2 - - 空
3 - - S4
4 - - S2
5 - - 空
6 - - S5
7 - - 空
8 - - S6
9 - - S3
假设我想找到一个元素S8(显然不存在)..On计算S8的散列函数假设它跳转到索引8.没有在索引8处找到元素,通过线性探测它检查下一个索引等等.. Now, the number of comparisons should come out to be total length of the array because by linear probing it should try to look in every index
...但实际答案是5! :|请有人解释!!
答案 0 :(得分:4)
线性探测将查找元素,直到它到达空哈希桶。在这种情况下,它将检查8,9,0,1和2;在2它将停止,因为桶是空的。
请注意,删除是通过使用特殊的"墓碑替换存储桶来处理的。值将元素标记为已删除但避免破坏线性探针链。因此,线性探针在空元素的情况下仍能正常工作。