哪一个具有更好的复杂度f1 =(n + m)+(n + m)log(n + m)或f2 = n * m

时间:2018-09-02 20:09:53

标签: algorithm time-complexity

如果

,哪个函数f1f2具有更好的时间复杂度
f1 = (n + m) + (n + m) * log(n + m) 

f2 = n * m

1 个答案:

答案 0 :(得分:1)

依赖。从中选择获胜者

f1 = (n + m) + (n + m) * log(n + m) 
f2 = n * m

我们应该知道mn是什么; nm之间的关系是什么。对于实例

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))

f1f2具有相同的复杂度