哈希表不够稳定

时间:2019-07-02 20:54:58

标签: hashtable

我了解在一个具有m个单元格和n个元素的哈希表中,搜索成本O(n / m)(平均) 让我们看一下使用哈希表的两个子算法: 答:当您有n个元素时,将它们插入到m = 100的哈希表中,并使用它搜索元素。 B.当您有n个元素时,将它们插入具有m = n / 3的哈希表中,并使用它来搜索元素。

在情况A中,搜索的复杂度为O(n / 100)= O(n) 在情况B中,搜索的复杂度为O(n /(n / 3))= O(1) THat表示如果要使用哈希表以O(1)复杂度搜索元素,则在创建哈希表时必须知道元素数,通过将n除以常量来计算m并传递给set的构造函数m

我是对的吗?我是否必须在哈希表的构造函数中传递m才能使用哈希表的好处?

1 个答案:

答案 0 :(得分:0)

正如我从上面的评论中学到的,答案是大多数实现会自动调整哈希表的大小,因此m始终类似于n..2n。当元素数量对于当前m太大时,将分配更大的哈希表 这意味着在最坏的情况下,添加到哈希表可能是O(n)(因为分配了更大的哈希表),但在摊销后它是O(1),就像向ArrayList中添加元素一样