渐近预期运行时间

时间:2013-02-04 14:44:19

标签: performance complexity-theory asymptotic-complexity

我在渐近分析问题上遇到了一些麻烦。该问题要求渐近最坏情况运行时间和函数的渐近预期运行时间。 Random(n)在1和n之间生成一个均匀分布的随机数(1到n之间的每个整数都是相同的。)

Func2(A, n)
/* A is an array of integers */
1 s ← A[1];
2 k ← Random(n);
3 if (k < log2(n)) then
4    for i ← 1 to n do
5       j ← 1;
6       while (j < n) do
7          s ← s + A[i] ∗ A[j];
8          j ← 2 ∗ j;
9       end
10   end
11 end
12 return (s);

我想知道第3行(if(k

-Matt

3 个答案:

答案 0 :(得分:0)

提示:

第4-10行的运行时间不是O(n ^ 2)。

考虑while循环的j值:

j = 1,2,4,8,16 ......

那不是O(n)。

答案 1 :(得分:0)

对于大n,k几乎总是大于log(n)。例如,对于n = 1024,log(1024)= 10 您将执行循环的概率是P = log(n)/ n 所以时间将是

(log(n)/n)*(n*log(n))+ O(RandomFunc(n))

所以一切都依赖于O(Random(n))。如果O(Random(n))= O(n)

O(n)>O(log(n)^2) = O(n)

第4-10行是O(nlog(n))

答案 2 :(得分:0)

使用Sigma Notation,您可以有条不紊地执行:

enter image description here