python - 简单Python程序的时间复杂度

标签 python time-complexity

def foo(n):
    for i in range(n):
        for k in range(1,i):
            if k>n/k:
                return k

这个程序的时间复杂度是多少? 答案是 O(n)。欢迎对此进行任何解释

编辑:拼写错误

最佳答案

answer says its O(n).

是的,复杂度是O(N),因为

for k in range(i,i)

for loop 永远不会执行。

所以,你的代码相当于

def foo(n):
    for i in range(n):
       pass

更新

def foo(n):
    for i in range(n):
        for k in range(1,i):
            if k>n/k:
                return k

k>n/k 相当于 k^2 > n 并且它是 k > sqrt(n)

循环主要执行sqrt(n)次,内部循环执行0次 ,然后1次,然后2次,.....,sqrt(n)次,然后从函数返回。 p>

因此,总复杂度为O(sqrt(n) * sqrt(n)),即O(n)

关于python - 简单Python程序的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59985562/

相关文章:

python - 如何将嵌套列表字符串转换为整数,然后在 python 3 中对它们进行排序?

Python 将一小时添加到 time.time()

algorithm - 素数计数函数和连续素数的乘积能用多项式时间计算吗?

algorithm - Python Codility Frog River 一次复杂度

algorithm - 在 {1, ..., n} 中找出最后一位为 7 的最大质数

algorithm - Order Of Growth 复杂的循环

Python Mock Patch 一个类中的多个方法

python - 如何将数据框转换为以行和列作为 Pandas 键的字典?

python - 如何使用 Python 从 Selenium 中的下拉列表中选择未显示的选项

arrays - 当底层结构是数组时,为什么二叉堆中的删除操作是 O(logN) 操作