【发布时间】:2015-06-12 21:43:02
【问题描述】:
令A[1, ..., n]为在每个位置存储一个位(1或0)的数组,f(m)为时间复杂度为θ(m)的函数。考虑以下用类似 C 语言编写的程序片段:
案例1:-
counter = 0;
for (i = 1; i < = n; i++)
{
if (A[i] == 1)
counter++;
else {
f(counter);
counter = 0;
}
}
案例2:-
counter = 0;
for (i = 1; i < = n; i++)
{
if (A[i] == 1)
counter++;
else {
counter = 0;
f(counter);
}
}
这个程序片段的复杂度是
(A) Ω(n2)
(B) Ω(nlog n) 和 O(n2)
(C) θ(n)
(D) O(n)
问题是我如何知道何时使用 if 语句或 else 语句以及何时调用 f(m) 函数,我该如何处理它?我可以考虑仅执行 if 或仅执行 else 的情况,但是有时执行 if 语句和有时执行 else 语句时的一般情况呢
【问题讨论】:
-
嗯.... 好吗?你有问题吗?
-
问题是我怎么知道何时使用 if 语句或 else 语句以及何时调用 f(m) 函数
-
你被分配了这个任务来帮助你学习一些东西。在这里获得此类问题的答案对您没有帮助。
标签: if-statement for-loop time-complexity asymptotic-complexity