软件设计师-算法复杂度

56 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

算法复杂度-大O表示法

大O表示法计算规则如下:

  • 加法规则:多项相加,保留最高阶项,并将系数化为1
  • 乘法规则:多项相乘都保留,并将系数化为1
  • 加法乘法混合规则:先小括号,再乘法规则,最后加法规则

各类算法复杂度排序如下图: image.png

时间复杂度和空间复杂度

  • 代码段以及代码段对应的时间复杂度如下图: Untitled.png

递归式算法复杂度

image.png

image.png

时间复杂度

  • 当每次递归的时间复杂度不变时,时间复杂度=递归次数*每次递归的时间复杂度
  • 上面第一张图的时间复杂度:O(n)*O(1)=O(n)
  • 上面第二张图的时间复杂度:O(lgn)*O(1)=O(lgn)

空间复杂度

  • 上面第一张图的空间复杂度:O(1)
  • 上面第二张图的空间复杂度:O(lgn)(每次调用都会定义变量i)

递归式主方法计算时间复杂度

  • 主方法也称主定理,给出了求解下图形式递归式的快速方法,其中,a>=1和b>1是常数,f(n)是一个渐进的正函数

image.png

  • 主定理内容如下:
  • 软考中只会考前两种情况,一般只要将a,b的值带入这两种情况,看符合那种情况 image.png

试题

2010年上半年64题

image.png

2010年下半年62题

image.png

2011年上半年64题

image.png

2011年下半年65题

image.png

2014年上半年62和63题

image.png

2015年下半年62和63题

image.png