使用散列搜索

时间:2012-10-04 06:24:41

标签: algorithm hash

假设我们有一个带有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! :|请有人解释!!

1 个答案:

答案 0 :(得分:4)

线性探测将查找元素,直到它到达哈希桶。在这种情况下,它将检查8,9,0,1和2;在2它将停止,因为桶是空的。

请注意,删除是通过使用特殊的"墓碑替换存储桶来处理的。值将元素标记为已删除但避免破坏线性探针链。因此,线性探针在空元素的情况下仍能正常工作。