以下是多少个数组访问

时间:2016-10-10 18:38:09

标签: java arrays runtime time-complexity

我有以下问题。 给出以下代码的数组访问次数的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.

我似乎是正确的大头钉吗?

3 个答案:

答案 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/2O(nˆ2 / 4)