我有以下问题。 给出以下代码的数组访问次数的Tilde近似值
for (int i=0; i < n; ++i)
for (int j = i/2; j < i; ++j)
A[i] = B[j] + C[j];
然而,就N而言,我无法确切知道有多少数组访问。
我认为答案是n^3
- n代表A,n ^ 2代表B和C.
我似乎是正确的大头钉吗?
答案 0 :(得分:0)
对于大O符号,N阶为N ^ 2.
这是由于2个嵌套for循环。
答案 1 :(得分:0)
如果我们假设没有编译器/ jir优化,我们有:
1)所有阵列都具有相同的访问量
2)第二次执行~i / 2次
3)总和(i = 0,i = n)i / 2 = O(n ^ 2)(前n个自然数之和)
答案 2 :(得分:0)
不,你不能算那个
您的数组A []的访问次数与B []和C []相同,唯一的区别是A在validateForm()
位置访问j
次。
和其他的东西,不是n3,你不能做A次B,你应该分析这两个来计算复杂性
所以,首先执行i
次,第二次执行n
次
在这种情况下,您有n/2
或O(nˆ2 / 4)