- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以二分查找为例,最好的情况运行时间会在第一次比较时得到
key_to_find == (imin + imax) / 2;
最佳情况下的运行时间将由 O(1) 表示。我完全理解,但令我困惑的是为什么使用 O(1) 以及为什么我不能使用 Θ(1) 或任何其他相同的表示法。
即如何确定我应该使用哪种表示法来表示运行时间(最佳、平均或最差情况)。
最佳答案
O 表示法和 Θ 表示法与最佳情况、平均情况或最坏情况没有直接关系。它们用于函数的渐近边界。你可以写:47n lg n = O(n lg n),3n^2 + 4n = O(n^2)
并且 O 和 Θ 符号之间存在差异。 O 表示“最多(使用一些常数因子)”,Θ 表示“相等(使用一些常数因子)”,例如:47n ln n = O(n^2),但不是 Θ(n^2)。
如果你想表达最佳情况、平均情况或最坏情况,你通常会显式地写出来:“最佳情况是 O(1)(或 Θ(1)),平均情况是 O(lg n),最坏情况是 O(n)。”
有时候你也“运行时间是O(x)”,那么你的意思是,运行时间至多与x成正比。如果你说“运行时间是 Θ(x)”,那么你的意思是,运行时间总是与 x 成正比。
关于algorithm - 渐近界与运行时间之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11276221/
谁能证实这个算法的复杂度是 O(n^2)? a = 0 b = 0 c = n while (b <= c) { for (j = b; j<=c; j++) { a
问题(数据结构): 我们应该使用哪种表示来计算 O(|V|+|E|) 中图顶点的入度?这应该如何在 Khan 的算法中保持而不损害运行时间(渐近地)?证明您的主张。 我的尝试:我们应该使用矩阵表示来计
在某些情况下,对问题的蛮力方法具有复杂性,在性能方面不够好。 让我们举个例子西塔(n^2)。 使用递归方法可以将其改进为 Theta(nlogn)。 显然,渐近地人们会选择使用递归方法,因为对于越来越
我在 C++11 中使用 std::unordered_map。我在字符串键和复合数据类型之间做出决定(比如将两个 long 放在一个结构中以保存 UUID)。 当 hashmap 使用 std::s
它是 f(n)=theta(h(n)) 因为 theta 是可传递的。但是谁能解释为什么 h(n)=theta(f(n))。 最佳答案 通过定义扩展 Big-O 符号通常会使事情变得简单。 关于alg
我是一名优秀的程序员,十分优秀!