我正在进行在线课程并且我坚持这个问题。我知道有类似的问题,但他们不帮助我。
最坏情况运行时间的增长顺序是多少 以下代码片段作为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
答案 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
然后,您可以更深入地了解自己的结论。