为什么哈希表的时间复杂度是O(1)而不是O(n)?



底层哈希算法对密钥的每个字符进行哈希,我理解这是O(n),其中n是密钥的长度。

当一个哈希表的底层方法是O(n)时,它怎么能被认为是O(1)呢?我认为最坏情况下的复杂性是优先考虑的。

这完全取决于你的假设,以及你在分析中作为可变参数的考虑。

通常,当你谈论哈希表操作的复杂性时,你忽略了哈希函数的细节,并且(可能不切实际地)假设它是O(1),即与键长度无关,或者你隐式地假设键长度有一个常数。这意味着唯一感兴趣的参数通常是哈希表中元素的数量。

但是如果你想看得更深入,你实际上是对的,你也可以考虑将键的长度作为复杂性分析的可测量参数。但这实际上取决于键的类型和哈希函数的细节。正如你所说的,哈希函数本身的复杂度在键的长度上是线性的(但不一定)。然后,您可以将复杂度指定为两个变量的函数,而不仅仅是一个。

最新更新