Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 使用线性探测实现哈希表时调整大小的权衡_Algorithm_Hashtable_Linear Probing - Fatal编程技术网

Algorithm 使用线性探测实现哈希表时调整大小的权衡

Algorithm 使用线性探测实现哈希表时调整大小的权衡,algorithm,hashtable,linear-probing,Algorithm,Hashtable,Linear Probing,我正在尝试使用线性探测实现哈希表 在将(键、值)对插入哈希表之前,我想检查它是否已满一半。如果是,我需要将底层数组的大小增加一倍 显然,有两种方法可以做到这一点: 一种方法是创建另一个大小加倍的数组,重新缓存旧数组中的所有条目,并将它们添加到新数组中。然后,将旧数组重新绑定到新数组。这种方法易于实现,但占用了大量空间 另一种方法是将数组加倍,并在适当的位置进行重新灰化。这种方式可能会导致更长的运行时间,因为重新灰化可能会导致与新哈希插槽和旧插槽的冲突 我应该使用哪种方法?如果事实上有足够的空间扩

我正在尝试使用线性探测实现哈希表

在将(键、值)对插入哈希表之前,我想检查它是否已满一半。如果是,我需要将底层数组的大小增加一倍

显然,有两种方法可以做到这一点:

一种方法是创建另一个大小加倍的数组,重新缓存旧数组中的所有条目,并将它们添加到新数组中。然后,将旧数组重新绑定到新数组。这种方法易于实现,但占用了大量空间

另一种方法是将数组加倍,并在适当的位置进行重新灰化。这种方式可能会导致更长的运行时间,因为重新灰化可能会导致与新哈希插槽和旧插槽的冲突


我应该使用哪种方法?

如果事实上有足够的空间扩展现有的哈希表,那么第二种解决方案只会在调整大小的过程中节省空间-我认为对于大型哈希表来说,这样做的可能性很小,所以我只选择第一种解决方案