恒定时间和有效恒定时间复杂度之间的差异

时间:2016-10-12 15:29:22

标签: algorithm time-complexity

我理解"恒定的时间复杂度O(1)" ,但当我遇到有效的恒定时间复杂度这个术语时,我非常困惑。我从Scala厨师书中得到了关于有效恒定时间的句子。

  

该操作有效地持续时间,但这可能取决于   在某些假设上,例如矢量的最大长度,或   散列键的分布。

但我认为上面的例子并不是有效的恒定时间,而是Amortize恒定时间。

请您在恒定时间和有效恒定时间之间给出明确的区别。这将非常有帮助。谢谢!!

1 个答案:

答案 0 :(得分:2)

这几乎与报价所说的完全相同:它不是恒定的时间,但是,在一些合理的假设下,它只是比常数时间略差,不足以引人注目。

所以,它不是恒定的时间,但它是如此接近以至于差异并不重要,这有效地使它(几乎)保持恒定时间,

例如,将数组数据结构实现为32路树技术上使其为O(log n)而不是O(1)。但是一个包含40亿个条目的数组只有6.4级深度,所以它基本上比传统的可变连续数组慢不到7倍。

相关问题