我正在尝试使用线性探测实现哈希表。
在将(key,value)对插入哈希表之前,我想检查它是否已满半。如果是,我需要加倍底层数组的大小。
显然,有两种方法可以做到这一点:
一种是创建另一个具有doubled大小的数组,重新散列旧数组中的所有条目并将它们添加到新数组中。然后,将旧数组重新绑定到新数组。这种方式易于实现,但占用空间很大。
另一个是将数组加倍并在原位进行重新散列。这种方式似乎可能导致更长的运行时间,因为重新散列可能会导致与新散列的插槽和旧插槽发生冲突。
我应该使用哪种方式?
答案 0 :(得分:0)
你的第二个解决方案只在调整大小过程中节省了空间如果实际上有空间来扩展现有的哈希表 - 我认为大型哈希表就是这种情况的可能性非常苗条,所以我会选择第一个解决方案。