算法大增长代码

时间:2015-06-23 01:20:14

标签: algorithm discrete-mathematics

我正在进行在线课程并且我坚持这个问题。我知道有类似的问题,但他们不帮助我。

  

最坏情况运行时间的增长顺序是多少   以下代码片段作为N?

的函数
int sum = 0;
for (int i = 0; i*i*i < N; i++)
    for (int j = 0; j*j*j < N; j++)
        for (int k = 0; k*k*k < N; k++)
            sum++;

我认为订单是n ^ 3,但我不认为这是正确的,因为循环每次只经过n的三分之一。那会使它成为nlogn吗?

另外

int sum = 0;
for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++)
        for (int k = 1; k <= N; k = k*2)
            for (int h = 1; h <= k; h++)
                sum++;

我认为这个是n ^ 4因为你有n * n * 0.5n * 0.5n

2 个答案:

答案 0 :(得分:1)

实际上,循环只能到达N的立方根。(i ^ 3&lt; n等)

这个长度的3个嵌套循环,给出O(立方根N,立方体)。这个O(N)

值得注意的是,如果你是正确的并且他们每个都去了N的三分之一,那么立方体仍然给出O(N ^ 3/9),1/9是常数,所以这是O(n ^ 3)< / p>

答案 1 :(得分:1)

如果您检查A valid provisioning profile for this executable was not found的各种值的sum值,那么算法的时间复杂度就变得很清楚了:

N

然后,您可以更深入地了解自己的结论。