- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道这个过程在以下算法中使用 big-theta 表示法可以返回的最小值和最大值是多少。算法是:
procedure F(𝐴[1..n])
s = 0
for i = 1 to n
j = min(max(i,A[i]),n³)
s = s + j
return s
最佳答案
编辑:删除了原始答案,因为它是针对错误问题的。
分析取决于以下行:
min(max(i,A[i]),n³)
如果我们弄清楚了这个的情况,那么我们就可以很容易地弄清楚结果的情况。我们必须回答是否i > A[i]
然后是 i
中的较大者和 A[i]
大于 n^3
.
i > A[i]
和 i > n^3
.这不可能是因为 i <= n
和 i, n
是整数。i > A[i]
和 i < n^3
.这可能会发生,例如,A[i] = -1
.在这种情况下,我们添加 i
一起为0 <= i <= n
.结果为 n(n+1)/2
,即 O(n^2)
. (我使用的是 O
,但 Theta 也适用)。i < A[i]
和 A[i] < n^3
.如果 i + 1<= A[i] <= n^3 - 1
就会发生这种情况和 n > 2
.在这种情况下,我们添加 i + 1
一起n
次,对于 i
等于 1
至 n
,或者我们正在添加 n^3 - 1
一起n
次。在低端,我们得到 n(n-1)/2 - n
,和以前一样使用 -n
-1
的术语,在高端我们得到 n^4 - n
;介于 O(n^2)
之间和 O(n^4)
.i < A[i]
和 A[i] > n^3
.如果 A[i] > n^3
就会发生这种情况.在这种情况下,我们有 n^3
求和n
n^4
的次数, O(n^4)
.基于以上,我的想法是最好情况的下界是Omega(n^2)
最坏情况的上限是O(n^4)
.这两个界限对于各自的情况都是严格的,但由于它们不相同,我们无法为结果的增长率给出一个单一的严格界限。
关于算法渐近复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42816454/
谁能证实这个算法的复杂度是 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
我是一名优秀的程序员,十分优秀!