【发布时间】:2019-02-27 00:10:04
【问题描述】:
设 m 为数组 A 的大小,n 为数组 B 的大小。下面的 while 循环的复杂度是多少?
while (i<n && j<m){ if (some condition) i++ else j++}
- 数组示例:A=[1,2,3,4] B=[1,2,3,4] while 循环最多执行 5+4 次 O(m+n)。
- 数组示例:A=[1,2,3,4,7,8,9,10] B=[1,2,3,4] while 循环最多执行 4 次 O(n) .
我无法弄清楚如何表示 while 循环的复杂性。
【问题讨论】:
-
Codn的定义或价值是什么?似乎缺少一些上下文,我们无法判断输入与n、m变量的关系以及Codn的值如何变化以影响运行时 -
已编辑以使问题更清晰
-
看起来很简单:O(n+m)。这还不足以描述问题吗?
-
@user10458501 它并没有使问题/问题更清楚。我们仍然不知道为什么案例 1 执行 5+4 次,案例 2 - 4 次。
-
我认为,如果您进一步解释“某些条件”是什么,我们可以为您的算法推导出复杂性......也许这个细节就是为什么不清楚为什么在每种情况下它会执行如此不同的次
标签: algorithm loops while-loop time-complexity