说明冲突解决策略的优缺点
下面解释了一些冲突解决技术的优缺点-
单独的链式散列
单独链接是一种散列技术,其中有一个列表来处理冲突。所以在同一个位置有很多元素,它们在一个列表中。序列保存在一个链表中。
单独链式散列的优点如下-
单独的链接技术对表的大小不敏感。
想法和实现都很简单。
单独链接散列的缺点如下-
键在单独的链接中不是均匀分布的。
单独的链接可能会导致表中出现空白。
职位列表可能很长。
线性探测
线性探测是一种简单的冲突解决技术,用于解决散列表中的冲突,散列表是用于维护散列表中值集合的数据结构。如果键值的位置发生冲突,则线性探测技术将下一个可用空间分配给该值。
线性探测的优点如下-
线性探测需要非常少的内存。
它不那么复杂并且更容易实现。
线性探测的缺点如下-
线性探测会导致一种称为“主要聚类”的场景,其中散列表中有大块的被占用单元。
线性探测中的值趋于成簇,这使得探测序列更长和更长。
二次探测
二次探测也是一种冲突解决机制,它接收由散列函数生成的初始散列,并继续添加来自生成的函数的任意二次多项式的连续值,直到找到放置值的空槽。
二次探测的优点如下-
Quadraticprobing不太可能出现primaryclustering的问题,而且比DoubleHashing更容易实现。
二次探测的缺点如下-
二次探测具有二次聚类。当2个键散列到同一位置时,就会发生这种情况,它们具有相同的探测序列。因此,在进行插入之前可能需要多次尝试。
此外,探测序列不会探测表中的所有位置。
双哈希
当要搜索的两个不同值产生相同的散列键时,双散列也是一种冲突解决技术。
它使用由散列函数生成的一个散列值作为起点,然后将位置增加一个间隔,该间隔是使用第二个独立散列函数确定的。因此这里有2个不同的哈希函数。
双散列的优点如下-
双散列最终克服了聚类问题。
双哈希的缺点如下:
双散列比任何其他散列都更难实现。
双重散列可能导致颠簸。