0

嗨,我是 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
4

1 回答 1

1

好吧,显然碰撞意味着 hash(key) 给出的位置已经被占用。探测长度是在那之后你做了多少次尝试,直到你找到一个位置(在开放寻址中)。

于 2018-05-17T10:35:13.667 回答