您好我是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
答案 0 :(得分:0)
显然,碰撞意味着hash(key)给出的位置已被占用。探测长度是指之后尝试的次数,直到找到位置(在开放寻址中)。