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

问题描述 投票:-2回答:1

如果,f1f2具有更好的时间复杂度

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

f2 = n * m
algorithm time-complexity
1个回答
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具有相同的复杂性

© www.soinside.com 2019 - 2024. All rights reserved.