我不知道 sigma 和 theta 是什么意思,但是 sqrt 是一个常数时间运算,所以它在大 O 表示法中基本上没有关系,即 j+=sqrt(i); 与 j+=i 相同;与 j+=1; 相同。另外 (nk) ~= n 代表 k 远小于 n。这意味着当 n 变大时,ni 就是 n。所以 (ni) * sqrt() = n * 1 = n。你为外循环做了 n 次,所以 n^2。
添加:
至于你的复杂系列,我相信这是准确的,但这不是我们关心的,我们关心的是操作的顺序。所以我们需要证明你的系列是 O(n^2) 或 K*n^2。所以你有 i + 2*i + ... (n-1)*i + n*i。其中 i 是常数,因此我们可以将其分解并包含在 K 中,并留下 1 + ... + n。该语句由 n 主导,即当 n 变大时 n ~= (n-1) 和 (n-1) ~= (n-2),这意味着 (n-2) ~= n。现在,当我们接近零时,这并不成立,但是 n 太大了,我们可以删除第一个说百万项。所以我们留下了一些看起来像 C*(nk)*n + c 的函数。其中 C、k 和 c 都是常数。由于我们不关心常量,我们只关心随着 n 的增长而增长,我们可以删除所有这些常量并只保存 n^2。或者,您可以证明您的系列以 n^k*n 为界,其中随着 n 接近无穷大,k 变为 1,但一个好的逻辑论证通常更好。〜本