我们有两个长度为L1和L2的列表。我们一个接一个地遍历了这两个列表。整体运作的时间复杂度是多少?
是O(L1 + L2)还是O(最大(L1,L2))?
这两者有什么区别?
答案 0 :(得分:2)
第一个O(L1 + L2)是合适的。例如,在使用V作为顶点数并且使用E作为边数的图算法中,许多操作用O(V + E)表示,例如图的深度优先搜索。当然,在这种情况下,E的范围可以从O(V)到O(V ^ 2)。如果L1和L2相对于彼此固定,那么O(max(L1,L2))= O(L1)或O(L2)可能更合适。
答案 1 :(得分:1)
两者之间没有区别。不失一般性,假设L1 = O(L2);如果不是,则L2 = O(L1),您可以只交换符号。
O(L1 + L2)= O(2 * L2)= O(L2)。类似地,O(max(L1,L2))= O(L2)。所以在这两种情况下,复杂度都是O(L2)。