我已经研究过这个相关的问题Rehashing process in hashmap or hashtable。但是,我需要知道如何正在执行重复过程。例如,如果loadfactor是.75;
1-这是否意味着我们忘记了现有的hashTable,并且对于每个现有的条目,我们逐个获取它们并使用新的哈希函数将它们重新输入到新的桶组中?
2-如果那么那么重新表达的表现是什么,比如退出n个条目。 O(n)是否摊销?
答案 0 :(得分:5)
这是否意味着我们忘记了现有的hashTable和for 每个现有条目我们逐个获取它们并重新输入新的条目 这次使用一个新的哈希函数设置桶?
是的,当基础数组被认为太小时会发生什么。我们必须重新计算每个条目的哈希值,因为新的哈希表根据其大小具有不同的压缩函数。
如果那样那么重新表现的表现是什么,比如什么时候 退出n个条目。 O(n)是否摊销?
是的,对于前一个数组中的每个条目,都会计算一个新哈希并重新输入该条目。所以O(n)
摊销了。根据存储桶链表的实现方式,最坏的情况可能是O(n^2)
,因为所有条目都可能在同一个存储桶中输入。