如果
,哪个函数f1
或f2
具有更好的时间复杂度
f1 = (n + m) + (n + m) * log(n + m)
和
f2 = n * m
答案 0 :(得分:1)
依赖。从中选择获胜者
f1 = (n + m) + (n + m) * log(n + m)
f2 = n * m
我们应该知道m
和n
是什么; n
和m
之间的关系是什么。对于实例
让m
为常数:
f1 = O((n + m) + (n + m) * log(n + m)) = O(n + n * log(n)) = O(n * log(n))
f2 = O(n * m) = O(n)
f2
更好。
让m ~ n
:
f1 = O((n + m) + (n + m) * log(n + m)) = O(2 * n + 2 * n * log(2 * n)) = O(n * log(n))
f2 = O(n * m) = O(n * n) = O(n**2)
现在f1
是一个更好的选择
最后,让m ~ log(n)
:
f1 = O((n + m) + (n + m) * log(n + m)) = O(n + log(n) + n*log(n + log(n))) = O(n * log(n))
f2 = O(n * m) = O(n * log(n)) = O(n * log(n))
f1
和f2
具有相同的复杂度