algorithm - 计算大 O 符号

标签 algorithm pseudocode notation

我目前有以下伪代码,我想弄清楚为什么问题的答案是 O(n)。

sum = 0;
for (i = 0; i < n; i++) do
    for (j = n/3;j < 2*n; j+= n/3) do
        sum++;

我认为答案是 O(n^2),因为第一个 for 循环会运行 'n' 次,而第二个 for 循环有 += n/3,给它另一个(n 除以某次),这只会简化为 O(n^2)。有人可以解释为什么它是 O(n) 吗?

最佳答案

这是因为第二个循环以恒定的操作量运行(不依赖于n)。从 n/32n 有一个步骤 n/3 类似于从 1/32,步长 1/3

对于合理的 n(不是 0),这将运行 5-6 次(这个数字并不重要,取决于你如何计算 /)

关于algorithm - 计算大 O 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113015/

相关文章:

algorithm - 有什么好的网站可以教算法以准备求职面试吗?

c++ - 如何在两个排序数组的并集中找到第 k 个最大的元素?

algorithm - 在数组中查找相同的值序列

javascript - HTML 注释标签中的 Javascript 是否仍应为 "hidden"?

coq - 使用 3 个符号表示法 [constr :operconstr] expected after [constr:operconstr]

algorithm - Big-O 和 Big-theta 可以互换使用吗?

java - 递归搜索未排序的树

algorithm - 提出树遍历递归算法的分步方法?

python - 处理文本文件的通用算法/模式

algorithm - 编辑距离算法(可以对整个子字符串进行更改)