有的人只梦,有的人敢想

什么是算法

一、算法定义(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的条件判断和两个分支部分,复杂度取三者中最大

 

posted @ 2020-05-06 17:12  隔壁的原野  阅读(808)  评论(0)    收藏  举报