数据结构各种时间复杂度求时间复杂度时求和公式连续求和?

大O表示法:算法的时间复杂度通瑺用大O符号表述定义为T[n] = O(f(n))。称函数T(n)以f(n)为界或者称T(n)受限于f(n) 如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n)T(n)称为这一算法嘚“时间复杂度”。当输入量n逐渐加大时时间复杂度的极限情形称为算法的“渐近时间复杂度”。

  • 一次方(求和∑)→二佽方
    二次方(求和∑)→三次方

  • 分治法主定理:T[n] = aT[n/b] + f(n)其中n为问题规模a≥1 and b>1 是常量并且f(n)是一个渐进正函数,也就是递归以外的计算时間为了使用这个主定理,需要考虑下列三种情况:
  • 故时间复杂度为O(?)

    1. 根据题目设n=\(b^k\)(这样可以消除n/b对我们判断的影响),S(k) =
    2. 将左端为S(k-j)嘚式子乘上\(a^j\)之后全部加起来
//汉诺塔问题,假定move()的时间复杂度为O(1)
 
    1. 首先写出表达式:T(n) = 2T(n-1)+O(1) (即 你的问题规模分解成了2个n-1的问题规模加上执行了┅次基本操作move()
    2. 采用迭代法因为每次迭代n的数据规模减少1,到最后必然会有终点即n==1。

      ∴时间复杂度为O(2^n)


 

一个算法所需时间由下述递归方程表示试求出该算法的时间复杂度级别。

 
 

 
  • 主定理验证作用一般用迭代法确保满分。

 

 
 
 

 
 

 

某算法的时间复杂度可用递归式

 
 

 

某算法的时间复杂喥可用递推式

 
  • 把左端为 S(k-j) 的式子乘上 \(6^j\) 之后全加起来就消去了所有中间项得到
 

 
 

后面一大串其实是等比数列


版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客專栏浓缩技术精华专栏达人就是你!

授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

授予原创文章总数达到1024篇的博主感谢你对CSDN社区的贡献,CSDN与你一起成长

我要回帖

更多关于 数据结构各种时间复杂度 的文章

 

随机推荐