Questions tagged «big-o»

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

9
大O关于(n ^ 2 + n)/ 2增长率的算法的问题
我问这个问题是因为我对大O表示法的一个方面感到困惑。 我正在使用Frank Carrano的《Java的数据结构和抽象》一书。在“算法效率”一章中,他显示了以下算法: int sum = 0, i = 1, j = 1 for (i = 1 to n) { for (j = 1 to i) sum = sum + 1 } 他最初将这种算法描述为具有(n 2 + n) / 2的增长率。哪个看似直观。 但是,可以说,当n大时,(n 2 + n) / 2的行为类似于n 2。在同一段他说(N 2 + N) / 2也表现很像ñ …
16 algorithms  big-o 

6
如何确定双重递归函数的运行时间?
给定任意双递归函数,将如何计算其运行时间? 例如(用伪代码): int a(int x){ if (x < = 0) return 1010; else return b(x-1) + a(x-1); } int b(int y){ if (y <= -5) return -2; else return b(a(y-1)); } 或类似的规定。 一个人可以或应该使用什么方法来确定类似的东西?

7
大哦表示法没有提及常数值
我是一名程序员,刚刚开始阅读算法。我对Bog Oh,Big Omega和Big Theta等符号并不完全相信。原因是根据Big Oh的定义,它指出应该存在一个函数g(x),使其始终大于或等于f(x)。对于n> n0的所有值,f(x)<= cn。 为什么我们在定义中不提及常数值?例如,假设一个函数6n + 4,我们将其表示为O(n)。但是,定义对于所有常数值都适用并不合适。仅当c> = 10且n> = 1时,这才适用。对于小于6的c值,n0的值将增加。那么,为什么不将常量值作为定义的一部分呢?



5
以编程方式找到算法的Landau表示法(Big O或Theta表示法)?
我习惯于手动搜索我的算法的Landau(Big O,Theta ...)表示法,以确保它们已尽可能地优化,但是当函数变得真正又大又复杂时,它就在不断发展。手工做的时间太多。它也容易出现人为错误。 我花了一些时间在Codility(编码/算法练习)上,并注意到它们会为您提交的解决方案(时间和内存使用量)提供Landau表示法。 我想知道他们是怎么做到的...你会怎么做? 除了词法分析或代码解析之外,还有其他方法吗? 这个问题主要涉及PHP和/或JavaScript,但是我对任何语言和理论都开放。
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.