是的,你是对的。
这是因为numberOfElementsInA + numberOfElementsInB <= 2 * numberOfElementsInA
, 并且根据大 O 符号的定义,它使得它O(numberOfElementsInA)
(with c=2
, and for each N
)
编辑:确切地说,每个循环都是O(numberOfElementsInSet_i)
- 因此每个循环都有常数c_i, N_i
,因此T(loop_i) <= numberOfElementsInSet_i * c_i
对于每个numberOfElementsInSet_i > N_i
.
因此:
for each numberOfElementsInSet_1 > max{N1,N2}:
T(loop_1) + T(loop_2) <= numberOfElementsInSet_1 * c_1 + numberOfElementsInSet_2 * c_2
<= numberOfElementsInSet_1 * c_1 + numberOfElementsInSet_1 * c_2 //set1 is bigger
<= 2 * numberOfElementsInSet_1 * max{c_1,c_2}
现在我们有一个正式的证明,循环一起也O(numberOfElementsInSet_1)
与N = max{N1,N2}
和c = max{c_1,c_2} * 2