python - 这个嵌套 for 循环的时间复杂度是多少?

标签 python big-o time-complexity

我在 python 中有以下代码:

def mystery(n):
    if n <= 50 :
        for i in range(n) :
            for j in range(n) :
                print i*j
    else :
        mystery(n-1)

对于下面的嵌套for循环:

for i in range(n) :
    for j in range(n) :

对于每个 in , j遍历 n多达i次。所以复杂度不应该是O(n^2)吗? ?但是,我的同事告诉我不是,谁能解释一下为什么?

最佳答案

这些循环仅在 n <= 50 时执行,因此它们只是对一项重要但恒定的工作量的简明描述。最多 2500 print语句被执行。 2500 和任何常数一样,与渐近复杂度无关。只有极限内的行为(即随着 n 无限增长)才是重要的。

对于较大的 n,函数只是从 n 倒数到 50。这部分需要 O(n) 时间,因此时间复杂度为 mystery。整体呈线性。

关于python - 这个嵌套 for 循环的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28142398/

相关文章:

algorithm - 写出函数的递推关系

PHP OpenDir 与 array_rand

python - 我可以在 matplotlib 中生成没有数据集而只有相关值(中位数、四分位数等)的箱线图吗?

python - 默认为 python 类方法中的类变量?

java - 嵌套循环的大 O 复杂度

algorithm - 大O/时间复杂度

algorithm - 假设我们有一个算法接受一个字符串数组,对每个字符串进行排序,然后对整个数组进行排序。运行时间是多少?

python - 使用 Tornado 广播消息

python - Google App Engine Web 应用程序框架是开源的吗?它在 GAE 之外可用吗?

java - 大 O - 冒泡排序