algorithm - 循环运行日志时间时的复杂性

标签 algorithm for-loop time-complexity

如果我们发现没有。一个数字的因素,我们可以使用以下高效循环。 for(i=1;i<=sqrt(n);i++),其中 n 是要找到其因子的“否”。这个循环的复杂度为 O(n)。

以下代码片段的时间复杂度是多少? (假设 log(x) 以 2 为底返回对数值)。 O(n^2) 还是 O(n logn)? (我假设 log n 是循环除以二时的复杂度。即 i/=2)

void fun()
{
    int i,j;
    for(i=1;i<=n;i++)
        for(j=1;j<=log(i);j++)
            printf("hello world");
}

最佳答案

您的代码中实际打印的“Hello world”数量是:

然后您可以使用 Srinivasa Ramanujan approximation日志(n!):

得到整个代码的实际复杂度,即O(n logn)

关于algorithm - 循环运行日志时间时的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29556801/

相关文章:

php - MySQL - 在数据库复杂性中查找表

java - 计算字符串的所有排列(破解编码面试,第六章 - 示例 12)

python - Python 字典的求和值(时间/空间复杂度)

java - 制作合适的 Java 数独生成器的问题

ruby - 给定一个字符串和一个字符串数组,我如何有效地计算字符串中数组的出现次数?

python - Python变量行中的for循环问题未定义

python - 在Python中通过SQL中的多个数据库进行迭代循环

python - 如何从已知的关联中创建集群/组?

c++ - 什么是 iota_n 的良好实现(STL 中缺少算法)

r - for 循环与 ggplots 生成具有相同值但不同标题的图形