让m为数组A的大小,n为数组B的大小。接下来的while循环的复杂度是多少?
while (i<n && j<m){ if (some condition) i++ else j++}
我不知道如何表示while循环的复杂性。
答案 0 :(得分:0)
一种常见的方法是描述最坏情况的时间复杂度。在您的示例中,最坏情况下的时间复杂度是 O ( m + n ),因为无论some condition
在什么时候在给定的循环迭代中,循环迭代的总数最多为 m + n 。
如果需要强调时间复杂度在某些情况下具有较小的上限很重要,那么您将需要弄清楚这些情况是什么,并找到一种表达方式。 (例如,如果给定算法采用大小为 n 的数组,并且具有最坏情况的 O ( n 2 )时间,也可以将其描述为“ O ( mn )时间,其中<em> m 是数组中的不同值”(当然,只有在正确的情况下),我们引入了一个额外的变量 m ,以便我们了解多多少少对性能的影响重复的值。)