我正在研究哈希表问题,我对线性探测问题中的删除操作有一个疑问。我需要从follow数组中删除元素97
空37 97 50 49 38空空45 45 46
当我从数组中删除元素'97'时,我需要调整数组大小,否则我可以删除元素?
这是我的疑问,因为当(在之前的一个练习中)我需要将数组重新设置为其容量的两倍,因为N> = M / 2
NEW DOUBT
当我从线性探测哈希表中删除一个元素时就像在例子中想象一下h(49)= 3.但是因为50在数组[3]中,我将搜索下一个空点,即数组[ 4]。我把它放在那里。然后我将删除元素50.现在我需要搜索元素49并且我知道h(49)= 3但是当我查看数组[3]时是一个NULL值并且结果告诉我元素49不存在。我该如何解决这种情况?
答案 0 :(得分:0)
删除元素时通常不会调整散列表数组的大小,因为通过使用较小的数组在访问速度方面没有“任何”,但是你会浪费相当多的CPU时间来重新散列条目并复制它们从旧阵列到新阵列。
只有当阵列变得非常稀疏时,为了节省内存,可能值得投入CPU时间来减少哈希表的内存占用。
这与添加到散列表有所不同,散列表过于密集,使得访问速度变慢,因为更常见的是,在基于哈希的直接访问之后,您必须使用线性搜索。因此,在添加到哈希表时,通常在达到某个加载因子时调整数组的大小。