对于给定的哈希值,线性探测生成的索引如下:
h
,h+1
,h+2
,h+3
等。
对于给定的哈希值,二次探测生成的索引如下:
h
,h+1
,h+4
,h+9
等。
在线性但不是二次方的情况下会形成簇。
但是当两个进程(方法)需要采用相同数量的步骤进行插入或搜索时,二次方法如何比线性更有效。谢谢!
答案 0 :(得分:6)
当您遇到空插槽时,您将停止搜索该表,因为您知道如果您遇到空插槽,那么您要查找的值将不在哈希表中。由于减少了群集,您将更有可能遇到空插槽并停止搜索。此外,由于聚类减少,插入时更有可能找到一个空槽,从而导致能够更快地搜索该值。
答案 1 :(得分:4)
效率取决于线性探测和二次探测形成的kinds of clustering。
线性探测形式 主要群集 一旦形成,群集越大,增长越快。这严重降低了性能。罗伯特·拉弗(Robert Lafore)举了一个很好的例子:它就像有人在商场里晕倒时聚集的人群。首次抵达是因为他们看到受害者摔倒;后来到达的人聚集在一起,因为他们想知道其他人在看什么。人群越多,越多 人们被它所吸引。
二次探测形式 二级聚类 。这是试图阻止集群形成。我们的想法是探测更广泛分离的单元格,而不是那些与主要哈希站点相邻的单元格。通过类比,它试图阻止第一次到达以避免形成人群。与主群集相比,辅助群集在性能方面更加微妙且不那么严重。
答案 2 :(得分:3)
由于较少的簇形成。这些值将更加分散,因此在二次情况下所需的探测平均数将更少。