一、算法定义(Algorithm)
1、一个有限的指令集
2、接受一些输入(有些情况不需要输入)
3、产生输出
4、一定在有限步骤之后终止
5、每一条指令必须:
①有充分明确的目标,不可以有歧义
②计算机能处理的范围之内
③描述不应依赖与任何一种计算机语言及其具体的实现手段
二、一个好的算法
1、空间复杂度S(n)——执行时占用储存单元的长度
2、时间复杂度T(n)——执行时耗费时间的长度
在分析一般算法效率时,长关注以下两种复杂度
·最坏情况复杂度Tworst(n)
·平均复杂度Tavg(n)
而平均一般难以求得,故常分析最坏复杂度
复杂度的渐进表示法
·Tn = O(f(n))表示存在常数C >0,n?>0使得当n≥n?时有T(n) ≤ C·f(n).
·Tn = Ω(f(n))表示存在常数C >0,n?>0使得当n≥n?时有T(n) ≥ C·f(n).
·Tn = Θ(f(n))表示同时有Tn = O(f(n))和Tn = Ω(f(n)).
复杂度分析
·若两端算法分别有复杂度T?n = O(f?(n))和T?n = O(f?(n)),则
T?n + T?n = max( O(f?(n)), O(f?(n) )
T?n * T?n = O( f?(n) * f?(n) )
·若T(n)是关于n的k阶多项式,那么T(n) = Θ(n^k)
·for循环的时间复杂度为循环次数n乘以循环体复杂度
·if-else取决于if的条件判断和两个分支部分,复杂度取三者中最大
原文:https://www.cnblogs.com/yuanxzzz/p/12837553.html