个人理解时间复杂度.请大神看看理解有问题不

我理解的情况是T(n)是根据问题规模而增长的时间复杂度,是一个准确的时间,但是呢.因为是预先对程序的时间进行判断,所以不会计算的那么的准确,就需要一个接近的时间值,也就是... 我理解的情况是T(n)是根据问题规模而增长的时间复杂度,是一个准确的时间,但是呢.因为是预先对程序的时间进行判断,所以不会计算的那么的准确,就需要一个接近的时间值,也就是个大概的时间来表示这个程序的时间复杂度T(n),
时间复杂度T(n)和基本操作的执行次数函数f(n)是成正比的,如果基本操作执行1次,时间是2秒
那么执行2次就是4秒
而O(f(n))就是渐进时间复杂度.渐进时间复杂度我理解的意思是接近时间复杂度T(n).
O(f(n))是怎么计算的呢
他是根据执行次数中增长率最快的那一项来计算的,比如在n(n+1)/2这个执行次数来说
把(n(n+1))/2拆开来就是(n^2+n)/2中间.当n扩大时,n^2增长比n快.所以只要计算n^2的时间就可以算出这个程序的时间复杂度,只能说是一个接近值.并不是一个准确的值
所以公式T(n) = O(f(n))也可说T(n)约等于O(f(n))
求大神看看理解上是否有错误,还是根本没理解对呢?
展开
 我来答
宛丘山人
2014-07-30 · 长期从事大学高等数学和计算机数据结构教学
宛丘山人
采纳数:6405 获赞数:24680

向TA提问 私信TA
展开全部
理解正确,也可以与高数的同阶无穷大联系起来,当n趋近于无穷大时,一般来说,T(n)也是无穷大量,如果n趋近于无穷大时,T(n)/f(n)的极限趋近于常数,则T(n)与f(n)是同阶无穷大,记作T(n)=O(f(n)),也可以说f(n)是T(n)的渐近时间复杂度。
追问
T(n)/f(n)的极限趋近于常数是什么意思呢。能具体点吗?f(n)是T(n)的数量级又是什么意思。谢谢帮忙
追答
  例如:
  for(i=1; ii; j--)
  if(a[j]无穷大][n(n-1)/2]/n^2=lim[n--->无穷大][(1-1/n)/2]=1/2 (常数)
  T(n)与n^2是同阶无穷大, 即T(n)=O(n^2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式