Questions tagged «big-o»

Big-O表示法用于表示渐近上限。它描述了算法的相关时间或空间复杂度。Big-O分析提供了问题难度的粗略且简化的估计。


30
O(log n)到底是什么意思?
我正在了解Big O Notation运行时间和摊销时间。我理解O(n)线性时间的概念,这意味着输入的大小会成比例地影响算法的增长...例如,二次时间O(n 2)等也是如此。 ,例如乘数为O(n!)的排列生成器,并通过阶乘增长。 例如,以下函数为O(n),因为该算法与输入n成正比增长: f(int n) { int i; for (i = 0; i < n; ++i) printf("%d", i); } 同样,如果存在嵌套循环,则时间将为O(n 2)。 但是O(log n)到底是什么?例如,说一个完整的二叉树的高度为O(log n)是什么意思? 我确实知道(也许不是很详细)什么是对数,即:log 10 100 = 2,但是我不明白如何用对数时间来识别一个函数。




4
PHP的Big-O列表
在使用PHP一段时间之后,我注意到并不是所有内置的PHP函数都能达到预期的速度。考虑函数的这两种可能的实现,该函数使用缓存的素数数组查找数字是否为素数。 //very slow for large $prime_array $prime_array = array( 2, 3, 5, 7, 11, 13, .... 104729, ... ); $result_array = array(); foreach( $prime_array => $number ) { $result_array[$number] = in_array( $number, $large_prime_array ); } //speed is much less dependent on size of $prime_array, and runs much faster. $prime_array => …


12
斐波那契数列的计算复杂度
我了解Big-O表示法,但是我不知道如何为许多函数计算它。特别是,我一直在尝试找出Fibonacci序列的朴素版本的计算复杂性: int Fibonacci(int n) { if (n <= 1) return n; else return Fibonacci(n - 1) + Fibonacci(n - 2); } 斐波那契数列的计算复杂度是多少,如何计算?


5
确定递归函数的复杂度(Big O表示法)
明天我有计算机科学中期课程,我需要帮助确定这些递归函数的复杂性。我知道如何解决简单的案例,但我仍在尝试学习如何解决这些较困难的案例。这些只是我无法弄清楚的一些示例问题。任何帮助将不胜感激,将极大地帮助我的学习,谢谢! int recursiveFun1(int n) { if (n <= 0) return 1; else return 1 + recursiveFun1(n-1); } int recursiveFun2(int n) { if (n <= 0) return 1; else return 1 + recursiveFun2(n-5); } int recursiveFun3(int n) { if (n <= 0) return 1; else return 1 + recursiveFun3(n/5); } void …

17
将对象以摊销的固定时间O(1)附加到R中的列表吗?
如果我有一些R list mylist,则可以obj像这样添加一个项目: mylist[[length(mylist)+1]] <- obj 但是肯定有一些更紧凑的方法。当我刚加入R时,我尝试这样写lappend(): lappend <- function(lst, obj) { lst[[length(lst)+1]] <- obj return(lst) } 但是由于R的按名称调用语义(当然lst会在调用时有效复制,因此当然不起作用,因此对的更改lst在.scope范围之外是不可见的lappend()。我知道您可以在R函数中进行环境黑客攻击,以到达函数范围并更改调用环境,但这似乎是编写简单附加函数的重击。 谁能建议一种更漂亮的方式呢?奖励积分(如果它适用于矢量和列表)。
245 r  performance  list  append  big-o 



9
log(n!)=Θ(n·log(n))吗?
我要证明log(n!)=Θ(n ·log(n))。 提示我应该用n n表示上限,而用(n / 2)(n / 2)表示下限。在我看来,这似乎并不那么直观。为什么会这样呢?我绝对可以看到如何将n n转换为n ·log(n)(即,记录方程的两边),但这有点倒退。 解决这个问题的正确方法是什么?我应该画递归树吗?对此没有任何递归,因此这似乎不是一种可行的方法。

5
2 ^ n和n * 2 ^ n是否具有相同的时间复杂度?
我发现的有关时间复杂度的资源尚不清楚何时可以忽略时间复杂度方程式中的术语,尤其是对于非多项式示例。 对我来说很明显,给定形式为n 2 + n + 1的东西,后两项是无关紧要的。 具体来说,给定两个分类2 n和n *(2 n),第二个的顺序与第一个相同吗?那里的附加n乘数有关系吗?通常,资源只是说x n呈指数形式并且增长得更快...然后继续前进。 我能理解为什么2 n不会超过n,但是为什么不将它们加在一起,所以在比较这两个方程时就显得尤为重要,事实上,它们之间的差总是n的因数,至少可以说这很重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.