while循环的复杂性是什么?

时间:2019-02-27 00:10:04

标签: algorithm loops while-loop time-complexity

让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循环最多执行O(m + n)5 + 4次。
  • 数组的示例:A = [1,2,3,4,7,8,9,10] B = [1,2,3,4] while循环最多执行4次O(n) 。

我不知道如何表示while循环的复杂性。

1 个答案:

答案 0 :(得分:0)

一种常见的方法是描述最坏情况的时间复杂度。在您的示例中,最坏情况下的时间复杂度是 O m + n ),因为无论some condition在什么时候在给定的循环迭代中,循环迭代的总数最多为 m + n

如果需要强调时间复杂度在某些情况下具有较小的上限很重要,那么您将需要弄清楚这些情况是什么,并找到一种表达方式。 (例如,如果给定算法采用大小为 n 的数组,并且具有最坏情况的 O n 2 )时间,也可以将其描述为“ O mn )时间,其中<​​em> m 是数组中的不同值”(当然,只有在正确的情况下),我们引入了一个额外的变量 m ,以便我们了解多多少少对性能的影响重复的值。)