这些算法复杂性的大 O 表示法

Big O notation for these algorithm complexities

我有一些复杂的算法,我不完全确定大 O 符号对它们有什么用。

i) ((n-1)(n-1) * ... * 2 * 1)/2

ii) 56 + 2n + n^2 + 3n^3

iii) 2n(lgn) + 1001

iv) n^2 * n^3 + 2^n

我相信 ii) 和 iii) 非常简单,ii) 的大 O 是 O(n^3) 和 iii) 的大 O 是 O(n log n) 但如果这些是错了。

主要是 i) 和 iv) 我有点困惑。对于 i) 我假设它遵循与 1+2+3+4+...+n 相同的想法,它具有 O(n^2) 的大 O 符号,所以这就是我输入的内容,对于 iv) 我输入 O( n^5) 但我不确定在这种情况下 2^n 是否会影响大 O 表示法,我不确定这里优先考虑的是什么还是我只包括它们两者?

任何帮助将不胜感激,我对 Big O 表示法不是那么有经验,所以任何建议也会很有帮助。

提前致谢

因为问题 i) 是将 1 到 n 的项相乘(而不是相加),所以应该是 O(n!)。

你说得对 ii) n^3 是主导项,所以它是 O(n^3),而 iii) 常数 2 和 1001 都可以忽略,剩下 O(n log n) .

在 iv) 上,您将前两项结合起来得到 n^5 是正确的,但即使这样最终也会被 2^n 项超过,所以答案是 O(2^n)。