For loop 大O和通用时间单位?

For loop 大O和通用时间单位?,for-loop,big-o,For Loop,Big O,我有两个问题,我想我知道如何回答(问题后的答案)。我只是想看看我是否了解时间复杂度计算以及如何找到BigO。 泛型形式只是表达式右侧每个值的乘积。 BigO是多项式中的最大幂。这种想法正确吗 int sum = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n * n; j++) for (int k = 0; k < 10; k++) sum += i; int和=0; 对于(int

我有两个问题,我想我知道如何回答(问题后的答案)。我只是想看看我是否了解时间复杂度计算以及如何找到BigO。
泛型形式只是表达式右侧每个值的乘积。
BigO是多项式中的最大幂。这种想法正确吗

int sum = 0;
for (int i = 0; i < n; i++)
   for (int j = 0; j < n * n; j++)
      for (int k = 0; k < 10; k++)
         sum += i;
int和=0;
对于(int i=0;i
这段代码需要多少通用时间单位?n(n^2)*10
这段代码的主要运行时间是什么?是的,你的理解是正确的。但有时你也要处理对数项。
看待对数项的方法可以是将其视为n^(1+ε)。其中ε是一个小数量。

是。基本上,大O的定义是,时间单位(你称之为时间单位)由一个恒定的时间表达式(从某个(任意高的)自然数到无穷大)限定。用更数学的表示法,这是:

函数f(n)是O(g(n)),如果存在一个常数C和一个数n,使得f(n)n

在你的上下文中,f(n)=n(n^2)*10和g(n)=n^3

顺便说一下,你也可以说函数是O(n^4)。您可以使用大θ表示法来表示这也是下限:f(n)是$\theta(n^3)


更多信息请参见此处:

有趣的是,我想知道,如果它是对数的,那会怎样?我不太理解它。@LF4:好吧,这里有一个简单的解释。您知道log(n)介于O(n)和O(n^2)之间。我们这样做的方式是将log(n)作为n^(1+e),其中e是一个非常小的量。这解释了一切。