for(int i = 0; i < n; i++) {
for(int j = 0; j < i; j++) {
O(1);
}
}
这里的函数是n*(n+1)/2
,但是如果外部循环条件是i
您只需计算迭代的总数:
1 + 2 + 3 + .. + n - 1 = n * (n - 1) / 2
正如你正确推断的那样。当您将n
替换为log(n)
时,只需在最后的公式中执行相同的操作,该公式将变为log(n)*(log(n)+1)/2
,或者在大O表示法中,O((log(n))^2)
。
当我们试图通过执行时间来表征算法的效率时,并且独立于任何特定程序或计算机,重要的是量化算法需要的操作或者步骤的数量。选择适当的基本计算单位是个复杂的问题,并且将取决于如何实现算法。对于先前的求和算法,一个比较好的基本计算单位是对执行语句进行计数。在 sumOfN 中,赋值语句的计数为 1($$theSum = 0$$) 加上 n 的值(我们执行 $$theSum=theSum+i$$ 的次数)。我
我对确定上述代码的BigO有点困惑。如果在最外层的循环中,则为(int x=1;x 然而,考虑到最外层循环迭代n 2次,这会改变bigO还是加法常数无关紧要的规则?最后,如果最内层循环迭代n 2次而不是n,会改变什么吗? 非常感谢。
问题内容: 另一个Big O符号问题…以下代码的Big O是什么: 我的想法:所以分解一下,我认为外部循环是,那么每个内部循环是什么,这将导致 问题1是否正确? 问题2:在组合嵌套循环时,它总是和每个循环的Big O一样简单吗? 问题答案: 当循环计数器不相互依赖时,总是可以从内部向外进行工作。 最里面的循环始终花费时间O(n),因为无论j和i的值是多少,它都会循环n次。 当第二个循环运行时,它将
问题内容: 我正在使用Java Swing编写游戏。我想在每次循环执行时绘制一下,并在之间稍加延迟以在屏幕上创建级联效果。我相信系统中的效率例程会将调用折叠为一个调用。无论如何,所有更改都在总延迟后立即发生。是否有某种方法可以强制系统立即重新绘制,然后在循环的每次迭代中延迟? 我的代码: 问题答案: 您可以用来强制立即重绘。 编辑:再次阅读您的问题后,对我来说,您可能正在事件分发线程上执行逻辑。这
我想通过删除那些不包含关键字/s的tweets来过滤pandas dataframe中包含tweets的列(3+100万行)。为此,我运行以下循环(对不起,我是python新手): 这个想法是,如果指示器等于0,就会删除推文。问题是这个循环要花很长时间才能运行。我肯定有一个更好的方法来删除不包含我的“filer_word”的推文,但我不知道如何编码。任何帮助都会很好。