和往常一样,在不同的书籍和学术文章上进行了相当多的研究,但实际上并不清楚。
对于哈希表数据结构中的哈希冲突解决方案,我们有一种非常流行的策略来解决它,它称为单独链接]。
我知道,在Separate Chaining
策略中,由于它们被散列为相同的特定值,因此最终被冲突到支持数组的相同索引中的键是(或将成为链接列表。[一位教练甚至这么说:
在单独链接中的支持数组的元素是链接列表。
我的问题如下:是从创建哈希表的那一刻起(在单独的链接策略实现期间)支持数组链接列表的类型,还是在第一次冲突后将其转换为该数组?因为将链接列表作为后备数组的每个元素意味着这些链接列表应该是元素的列表,而元素又是一对键值的条目/桶。我认为这确实消耗了大量的内存和资源。
谢谢。
[和往常一样,在不同的书籍和学术文章中进行了相当多的研究,但实际上并不清楚。对于哈希表数据结构中的哈希冲突解决方案,我们有一个非常... ...>
是的,单独的链接将比探测或重新散列花费更多的内存。但是这样做的好处是,在性能开始下降之前,您可以在哈希表中获得更多项。在某些时候,您仍然必须重新编制索引:通常,当您意识到某个存储桶的数量过多时,或者当已占用的存储桶总数超过某个阈值时。
注意,后备数组本身不是链表。使用探测或重新哈希的哈希表的后备数组可能是动态大小的条目数组。您的输入将类似于: