我需要的是如何确定它的解释,这里有一些例子,希望你能用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
答案 0 :(得分:1)
这很简单。
当O()
上升到大数(朝向无穷大)时,表达式的某些部分变得毫无意义,因此请删除它们。
此外,100 + 2*n
符号是相对论的,而不是绝对的,意味着没有比例,所以常数因素是没有意义的,所以删除它们。
示例:100
。数字较低n
是结果的主要贡献者,但随着n
的增加,它变得毫无意义。由于没有比例,2n
和O(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}},所以这就是答案。