如何使用Big-O表示法

时间:2016-04-14 16:23:14

标签: java algorithm time-complexity big-o

我需要的是如何确定它的解释,这里有一些例子,希望你能用Big-O表示法帮助我找到它们的复杂性:

For each of the following, find the dominant term(s) having the sharpest increase in n and give the time complexity using Big-O notation.  
Consider that we always have n>m.

Expression Dominant term(s) O(…) 
5+ 0.01n^3 + 25m^3   
500n +100n^1.5 + 50nlogn   
0.3n+ 5n^1.5  +2.5n^1.75   
n^2logn +n(log2m)^2    
mlog3n +nlog2n   
50n+5^3 m + 0.01n^2    

1 个答案:

答案 0 :(得分:1)

这很简单。

O()上升到大数(朝向无穷大)时,表达式的某些部分变得毫无意义,因此请删除它们。

此外,100 + 2*n符号是相对论的,而不是绝对的,意味着没有比例,所以常数因素是没有意义的,所以删除它们。

示例:100。数字较低n是结果的主要贡献者,但随着n的增加,它变得毫无意义。由于没有比例,2nO(n)是相同的,即线性曲线,因此结果为500n +100n^1.5 + 50nlogn

或者换句话说,您可以从此图表中选择表达式中最极端的曲线: http://bigocheatsheet.com/img/big-o-complexity.png

我们来看你的第二个例子:O(n)
第一部分是O(n^1.5) 第二部分是O(nlogn) 第三部分是O(n^1.5) 最快的上升曲线是{{1}},所以这就是答案。