两个嵌套 for 循环的运行时

图沙尔

我正在计算以下 Python 代码的运行时间复杂度,n^2但它似乎不正确。显示的正确答案是n(n-1)/2谁能帮助我理解为什么内部循环不是运行n*n时间而是运行时间n(n-1)/2

for i in range(n):
    for j in range(i):
        val += 1
破碎基准

在内部循环的第一次运行时i = 0for循环根本不执行。(在 中迭代的元素为零range(0))。

在内部循环的第二次运行时i = 1for循环执行一次迭代。(有一个元素需要迭代range(1))。

然后,第三次运行有两个元素,第四次运行三个,遵循这种模式,直到i = n - 1

总迭代次数为0 + 1 + ... + (n - 1)这个总和有一个众所周知的形式*:对于任何自然的m, 0 + 1 + ... + m = m * (m + 1) / 2. 在这种情况下,我们有m = n - 1,所以总共有n * (n - 1) / 2迭代。

你是对的,这个算法的渐近时间复杂度是O(n^2). 但是,鉴于您已经说过“正确答案”是n * (n - 1) / 2,这个问题很可能会询问确切的迭代次数(而不是渐近界)。


* 请参阅此处以获取此封闭表格的证明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

嵌套循环的运行时间

分析嵌套for循环的运行时间

嵌套while循环的运行时间

一个for循环中两个for循环的运行时复杂度

运行时间的嵌套while循环,它不复位

使用嵌套的for循环改善R的运行时间

给定嵌套循环的运行时是什么?

嵌套的For循环Excel VBA返回运行时错误9

嵌套的“for”循环的运行时间是如何计算的?

在Python中合并两个列表的运行时

两个不同版本的 GNOME 运行时

在运行时同时加载两个场景

两个不同类的运行时多态

同时获取两个程序的运行时间

setState() 在两个 setState() 运行时阻塞 UI

每个循环嵌套两个DataFrame

列表上的两个嵌套 for 循环

如何退出两个嵌套循环?

为什么这段带有两个for循环的代码没有Big O的O(N ^ 2)运行时?

并行运行两个嵌套的 for 循环以创建矩阵

具有三个嵌套 for 循环的函数运行时间的渐近增长

使用 Tornado 发出同步请求。运行时错误:在另一个循环正在运行时无法运行事件循环

有两个线程的运行时间与一个线程的运行时间没有改善

了解具有嵌套循环的函数的理论运行时间

如何使用两个单独的循环制作嵌套的for循环?

如何将一个for循环划分为几个循环并使用线程运行它们以缩短运行时间?

嵌套循环确定两个班级的学生(两个)

如何减少包含2个for循环的这段代码的运行时间?

我想实现一个双向循环链表-代码中的运行时错误