📜  门| GATE-CS-2017(套装2)|第 49 题

📅  最后修改于: 2021-09-26 04:15:39             🧑  作者: Mango

考虑以下 C函数。

int fun(int n)
{
    int i, j;
    for (i = 1; i <= n ; i++)
    {
        for (j = 1;  j < n; j += i)
        {
            printf("%d %d", i, j);
        }
    }
}

用 θ 表示法的乐趣时间复杂度为:
(A) θ(n √n)
(B) θ(n 2 )
(C) θ(n log n)
(D) θ(n 2 log n)

答案: (C)
说明:让我们看看最里面的语句“printf(“%d %d”, i, j);”有多少次被执行。

对于 i = 1,语句运行 n 次
第 i 次迭代,语句运行 Θ(n/i) 次。

将 i = 1 到 n 的所有迭代相加,我们得到
因此 T(n) = Θ(n(1 + 1/2 +1/3 + ….)) = Θ(n log n)。

注意 1/1 + 1/2 + 1/3 + … 的值。对于较大的 n 值,1/n 与 Log n 大致相同。
这个问题的测验