目录
一、算法的定义
算法是对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。
简而言之,算法就是解决问题的方法和步骤。
二、算法的描述
自然语言:英语、中文;
流程图:传统流程图、NS流程图;
伪代码(类语言):类C语言;
程序代码:C语言程序;JAVA语言程序。
三、算法与程序
算法:输入转换为输出,一个问题可有多种算法。
程序是由某种程序设计语言对算法的具体实现。
算法的特性:有穷性、确定性、可行性、输入(0个或多个)、输出(1个或多个)
一个好的算法应具备正确性、健壮性和可读行。
四、算法时间效率的度量
1.算法时间效率
算法时间效率是依据该算法编制的程序在计算机上执行所消耗的时间来度量的。
2.两种度量方法
①事后统计(测算)
②事前分析(估算):
算法运行时间=一个简单操作所需的时间*简单操作次数
算法运行时间=∑每条语句执行次数(语句的频率)*该语句执行一次所需的时间
五、算法时间复杂度的渐进表示法
1.数量级
为了便于比较不同算法的时间效率,我们仅比较它们的数量级。
算法的渐进时间复杂度(时间复杂度):即数量级
2.分析算法时间复杂度的基本方法
1.找出语句频率最大的那条语句作为基本语句;
2.计算基本语句的频率得到问题规模n的某个函数f(n);
3.取其数量级用符号“o”表示。
3.渐进空间复杂度
空间复杂度:算法所需存储空间的度量。
记作:S(n)=O(f(n)) 其中n为问题规模(或大小)
4.算法要占据的空间
算法本身要占据的空间:输入/输出,指令,常数,变量等。
算法要使用的辅助空间。