Data structures 大oh符号运行时间
你是怎么计算出来的?首先得到c,这是两个函数的比值,然后用这个比值求出n的范围吗?你怎么知道?请解释我真的迷路了,谢谢 示例1:证明运行时间T(n)=n^3+20n+1是O(n^3) 证明:根据职业健康大定义 T(n)是O(n^3)如果T(n)≤ c·n^3对于某些n≥ 不 让我们检查一下这个条件:Data structures 大oh符号运行时间,data-structures,big-o,Data Structures,Big O,你是怎么计算出来的?首先得到c,这是两个函数的比值,然后用这个比值求出n的范围吗?你怎么知道?请解释我真的迷路了,谢谢 示例1:证明运行时间T(n)=n^3+20n+1是O(n^3) 证明:根据职业健康大定义 T(n)是O(n^3)如果T(n)≤ c·n^3对于某些n≥ 不 让我们检查一下这个条件: 如果n^3+20n+1≤ c·n^3然后是1+20/n^2+1/n^3我想你看到的诀窍是你没有想到大数字。因此,让我们举一个反例: T(n) = n^4 + n 让我们假设它是O(N^3)而
如果n^3+20n+1≤ c·n^3然后是1+20/n^2+1/n^3我想你看到的诀窍是你没有想到大数字。因此,让我们举一个反例:
T(n) = n^4 + n
让我们假设它是O(N^3)
而不是O(N^4)
。你能看到的是
c = n + 1/n^2
这意味着c
,一个常数,实际上是c(n)
,一个依赖于n
的函数。把N
取为一个很大的数字表明,不管怎样,c==c(N)
,都是N
的函数,所以它不可能是O(N^3)
当N
变为无穷大时,除了一个常数外,所有东西都保持不变:
c = 1 + 1/n^3
现在你可以很容易地说,它仍然是c(n)
!随着N
变得非常非常大1/N^3
变为零。因此,在O(N^4)
时间中声明T(N)
的情况下,c==1
或者它是一个常量
这有帮助吗?请注意,大O符号实际上并没有告诉您任何东西的运行时间。它告诉您当要处理的项目数量增加时,某个项目的运行时间是如何增长的。我的意思是,使用某个算法的Big-O符号不会以任何方式告诉您该算法处理x元素需要多少秒/时间单位。A就Big-O表示法而言,您只保留表达式中最大/增长最快的部分,这就是为什么后面的
n^3+2n^2
表示法是O(n^3)
。谢谢惠蒂!非常感谢你的帮助