📜  门| GATE-CS-2017(Set 2)|第49章

📅  最后修改于: 2021-07-02 17:54:50             🧑  作者: 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);
        }
    }
}

按照θ表示法,fun的时间复杂度为:
(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相同。
这个问题的测验