哈希表中冲突和探测长度之间的区别是什么?如何跟踪它们?

时间:2018-05-17 10:25:59

标签: python hash linear-probing

您好我是Python的新手,我实现了一个散列表类,它解决了线性探测的冲突。

现在我正在尝试编写一个函数来跟踪碰撞次数和探头长度。我已经编写了跟踪碰撞次数的功能,但我不知道如何跟踪探头长度,因为我认为它们是相同的?

def getCollisionAndProbeLength(self, key, value):
    position = self.hash_value(key)
    collision=0
    probeLength=0

    for i in range(self.table_size):
        if self.array[position] is None || self.array[position][0]==key && self.array[position][1]==value :#correct item or collision resolved
            break
        elif self.array[position][0]==key && self.array[position][1]!=value:
            collision+=1
            position = (position+1) % self.table_size
 return [collision,probeLength]

编辑: 好吧,显然碰撞意味着hash(key)给出的位置已被占用。探测长度是指之后尝试的次数,直到找到位置(在开放寻址中)。

所以我猜它应该是这样的:

 elif self.array[position][0]==key && self.array[position][1]!=value:
            collision+=1
            probeLength=collision-1
            position = (position+1) % self.table_size

1 个答案:

答案 0 :(得分:0)

显然,碰撞意味着hash(key)给出的位置已被占用。探测长度是指之后尝试的次数,直到找到位置(在开放寻址中)。