O(1),O(n),O(n * n)记忆的含义是什么?

可能重复:
Big O的纯英文解释

很多时候,算法的时间复杂性被讨论时,内存也被考虑在内。 我想知道big-O(1),big-O(n),big-O(n * n)内存的含义是什么?

它与时间复杂性有何关系?


正如xmoex所说:

o(1)构成了一个不断的内存使用情况。 所以输入量是无关紧要的。

o(n)构成线性内存使用情况。 所以更多的输入意味着线性更多的内存。

o(n * n)构成二次​​存储器使用情况。 所以更多的输入意味着更多的内存(平均x ^ 2)。

在大多数情况下,这种内存复杂度度量与时间复杂度的度量完全无关。 对于计算机算法,了解算法如何管理这些复杂性以决定算法的质量很重要。 但是两者都必须单独计算。 根据您的使用情况和问题的情况,其中一个可能比另一个更重要。


o(1)表示恒定的平均内存使用量,无论您的输入大小如何
o(n)表示如果你有n个正在处理的元素,你的平均内存需求将增长为线性
o(n * n)表示如果您有n个正在处理的元素,则您的平均内存需求将增加二次方

有一篇关于所谓的大o符号的wiki文章(也包括很少的o ...)


我不确定你在这里的意思是否是大O或小O,但我会更普遍地回答。

这对于记忆来说意味着它与时间相同。 如果函数在内存O(1)中增长,那么无论输入大小如何,它都会使用恒定的内存量。 如果一个函数在O(n)中增长,它使用一个线性量,而O(n * n)它使用一个二次量。

链接地址: http://www.djcxy.com/p/6743.html

上一篇: what is the meaning of O(1), O(n), O(n*n) memory?

下一篇: What is Big O notation? Do you use it?