考虑以下函数
int unknown(int n) {
int i, j, k = 0;
for (i = n/2; i <= n; i++)
for (j = 2; j <= n; j = j * 2)
k = k + n/2;
return k;
}
上面函数的返回值是多少? (GATE CS 2013)
(一种) (B) (C) (D)
(A) A
(B) B
(C) C
(D) D答案: (B)
说明:在以下说明中,“ ^”用于表示指数:
外循环运行n / 2或Theta(n)次。
内部循环运行(登录)时间(请注意,每次迭代j均乘以2)。
因此,语句“ k = k + n / 2;”运行Theta(nLogn)次。
该语句将k的值增加n / 2。
因此k的值变为n / 2 * Theta(nLogn),即Theta((n ^ 2)* Logn)。这个问题的测验