今天,来学习一下程序中的渐近符号,递归及分析。
一、渐近符号:
1.,表示f(n)的复杂度最多与g(n)一个数量级,即小于等于。
2.,表示f(n)的复杂度要比g(n)的数量级小,即小于。
3.,表示f(n)的复杂度最少与g(n)一个数量级,即大于等于。
4.,表示f(n)的复杂度要比g(n)的数量级大,即大于。
5.,表示f(n)的复杂度既大于等于g(n)的复杂度,又小于等于g(n)的复杂度,即于g(n)的复杂度相当。
二、分析一个算法的复杂度:
1.利用递归树的方法:
画出递归树,然后计算叶子节点的和。一般最后计算和的式子都是等比级数的形式,所以会非常好算。
例如:T(n) = 2T(n/2) + n2的递归树如下:
2.主定理方法:
懒得自己画一个图了,找了一个人的博客的图:
主定理有三种情况,不同的情况有不同的用法:
利用主定理可以很方便地分析一些算法的复杂度。