algorithm - 这些函数的时间复杂度(渐近地)如何相等?

标签 algorithm

我知道它们在实际运行时间上有所不同,但使用我无法确定的概念,因为代码在执行时截然不同,所以它们具有相同的时间复杂度。

怎么会

void fun(){
    int i, j;
    for (i=1; i<=n; i++){
        for (j=1; j<=log(i); j++){
            printf("GeeksforGeeks");//prin tit
        }
    }
}

void fun2(){
    int i, j;
    for (i=1; i<=n; i++){
        for (j=1; j<=log(n); j++){
            printf("GeeksforGeeks");//print it
        }
    }
}

渐近相同且时间复杂度为 O(logn!)?

最佳答案

fun 的步数是 O(sum of log(i) for i from 1 to n) 与 O(log(n!)) 相同。

fun2 的步数是 O(n log(n))。

现在Stirling's approximation告诉我们这其实是一样的。

关于algorithm - 这些函数的时间复杂度(渐近地)如何相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40036723/

相关文章:

vb.net - 列表框填充的优化

algorithm - 如何在图或人工神经网络中引导信息流?

algorithm - 如何为二叉表达式树的固定数量的叶子置换所有可能的树结构?

ruby - 在 Ruby 中,使用方法中定义的函数

algorithm - 师大O

php - 计算预定义日期范围之间的天数

c - 用餐哲学家饥饿的可能性

Javascript 基本算法

algorithm - 你如何找到 Sean Parent 的 "Shoe laces and beans"数据结构而不是树

c++ - 二进制搜索树键/值对 - 我知道值但不知道键 C++