算法与算法分析

算法的特性

1.有穷行2.确定性3.可行性4.输入5.输出

好算法目标

1.正确性2.可读性3.健壮性4.效率与低存储量需求

算法效率的度量

渐进时间复杂度(时间复杂度)

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作T(n)=O(f(n)),它表示随问题规模n的增大算法执行时间的增长率与f(n)的增长率相同。
基本操作是最深层循环內的语句中的原操作,它的执行次数和包含它的语句的频度相同。
由于算法的时间复杂度考虑的只是对于问题规模n的增长率,则在难以精确计算基本操作执行次数(语句频度)的情况下,只需要求出它关于n的增长率或阶即可。
一般情况下时间复杂度指的是最坏情况下的时间复杂度。

复杂度分析小窍门

1.若两段算法分别由复杂度T1(n)=O(f1(n))和T2(n)=O(f2(n)),
则T1(n)+T2(n)=max(T1(n),T2(n))(两循环同级并列)
T1(n)*T2(n)=O(f1(n)*f2(n))(两循环嵌套)
2.若T(n)是关于n的k阶多项式,那么T(n)=O(n^k)
3.一个for循环的时间复杂度等于循环次数乘以循环体代码的复杂度。
4.if-else结构的复杂度取决于if的条件判断复杂度和两个分支部分的复杂度,总体复杂度取三者最大。

你可能感兴趣的:(算法与算法分析)