珺珺期末考试刚考完,打算温习一遍算法分析与设计课程的内容。
一、什么是算法?
算法(Algorithm)是指解决问题的方法或过程,它包含一系列步骤,用来将输入数据转换成输出结果。
算法具有以下性质:
输 入:有零个或多个输入
输 出:至少有一个输出
确定性:组成算法的每条指令清晰、无歧义
有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限
程序:是算法用某种程序设计语言的具体实现,程序不一定满足有限性
算法复杂性 :算法所需要的计算机资源
算法的时间复杂性T(n):如果问题的规模为n,在算法输入为I时算法所需的时间资源为T(N,I) ,T(N,I)称为算法的时间复杂性
算法的空间复杂性S(n):如果问题的规模为n,在算法输入为I时算法所需的空间资源为S(N,I) ,S(N,I)称为算法的空间复杂性
算法分析:分析算法复杂性的过程
空间复杂性分析相对比较简单,通常主要分析时间复杂性
二、时间复杂性分析
时间复杂性渐进表示法
算法复杂性的渐近性态:对于F(N),如果存在F’(N),使得当N→∞时有:
(F(N )-F’(N )) / F(N ) → 0
渐近意义下的记号:O、Ω、θ、o
通常我们用大写的O(即阶的英文单词order的首字母)来渐进表示算法时间复杂性。
O表示法:
示例如下: