《大学计算机算法基础.ppt》由会员分享,可在线阅读,更多相关《大学计算机算法基础.ppt(23页珍藏版)》请在优知文库上搜索。
1、主要内容算法的基本概念算法的组成要素算法的表示方法算法设计的基本方法算法的复杂度4.1 算法基本概念1.算法的概念为解决一个问题而采取的方法和步骤,称为算法。用计算机来解决问题的方法和步骤,称为计算机算法。分为数值运算算法和非数值运算算法。2023-3-1大学计算机基础34.2 算法的组成要素一个算法含有两大要素:操作步骤操作步骤:对于计算机算法而言,包括组成算法的各条指令,也就是对数据的运算和操作。控制结构:控制结构:控制算法中各操作步骤地执行顺序。通常有三种结构:顺序结构选择结构循环结构控制结构及算法举例1、顺序结构:例1:求圆的面积的算法设r表示圆的半径,s表示圆的面积步骤1:输入半径r
2、的值步骤2:s=3.14 r r步骤3:输出s的值2023-3-1大学计算机基础5多个步骤由上到下依次执行,顺序不能打乱,称为顺序结构多个步骤由上到下依次执行,顺序不能打乱,称为顺序结构2、选择结构:例2:求两个整数a和b中的大者的算法:输入a、b的值:如果ab,则执行S3;否则转去执行S4:输出a的值,结束:输出b的值,结束其中,和根据条件只能执行一个,称为选择结构其中,和根据条件只能执行一个,称为选择结构3、循环结构例3:求出50!的算法设t为被乘数,i为乘数s1:使t=1s2:使i=2s3:tits4:i+1 is5: 转去执行s3s6: 输出t的值当当i50i50时,时,为下一次乘法做
3、准备为下一次乘法做准备重复执行重复执行多次,多次,循环结构循环结构顺序结构、选择结构、循环结构是表示一个算法的基本结构。由以上3种基本结构组成的算法,称为“结构化”的算法,可以解决任何复杂的问题。2023-3-1大学计算机基础84.3 算法的基本特征1) 有穷性 算法中的步骤是有限的2) 可行性 算法中的每一个步骤必须是可执行的3) 确定性 算法中的每一个步骤必须是含义确切的4) 有零个或多个输入5) 有一个或多个输出4.3 算法的表示方法自然语言流程图伪代码计算机编程语言算法的流程图表示法传统流程图顺序结构、选择结构和循环结构流程图例如:50!的流程图2023-3-1大学计算机基础13开始开
4、始t=1i=2t=tii=i+1i=50输出输出t结束结束YNN-SN-S图:图:三种控制结构的三种控制结构的N-S图图1=t2=iit =ti+1 =i直到直到i50输出结果输出结果50!的N-S图算法的伪代码表示法2023-3-1大学计算机基础16伪代码描述50!:1 t1 t2 i2 iwhile i=50while i=50tt* *i t i+1 i i t i+1 i print tprint t 用介于自然语言和计算机语言之间的文字和符号来描述算法算法的计算机语言表示法计算机语言(C语言)描述50!:#include #include void main()void main()
5、 double t,i;double t,i;t=1;i=2;t=1;i=2;while(i=50)while(i=50) t=tt=t* *i;i;i=i+1;i=i+1; printf(“%.0f”,t);printf(“%.0f”,t); 必须严格遵守计算机语言的语法规则4.5 常用的算法介绍列举法:列举法:根据提出的问题,列举所有可能情况,并用问题中给定的条根据提出的问题,列举所有可能情况,并用问题中给定的条件检验哪些是需要,哪些是不需要。例如:求水仙花数。件检验哪些是需要,哪些是不需要。例如:求水仙花数。递推法:递推法:从已知的初始条件出发,逐次推出所要求的各中间结果和最从已知的初始
6、条件出发,逐次推出所要求的各中间结果和最后结果。后结果。递归法:递归法:将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。合,这就是递归的基本思想。 回溯法:回溯法:通过对问题的分析,找出一个解决问题的线索,然后沿着这个线通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探
7、,若试探成功,就得到问题的解,若试探失败,就逐索逐步试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再逐步试探。步回退,换别的路线再逐步试探。 4.6 算法的复杂度解决一个问题,可以有很多算法,如何评价一个算法的好坏?首先算法正确,具有算法的5个基本特征还需考虑:执行算法消耗的时间执行算法消耗的存储空间具有可读性,易于理解健壮性评价方法:事前估算事后统计评价结果:称为“算法复杂度”算法复杂度可以分为时间复杂度和空间复杂度1. 算法的时间复杂度通常把算法中进行简单操作的次数的多少称为算法的时间复杂度算法的时间复杂度往往是问题规模的函数,即 T(n) = O(f (n) 其中,n表示问题的规模,f(n)为问题的规模函数 例如:求n的阶乘算法的时间复杂度为: T(n) = n-1 通常表示:T(n) = O(n)2023-3-1大学计算机基础21算法的时间复杂度还跟问题的输入数据有关,所以算法的时间复杂度可以用两种形式表达:平均时间复杂度最坏情况时间复杂度平均时间复杂度平均时间复杂度能够计算出所有输入对应的算法时间复杂度的平均值。若用t(x)表示输入为x时的算法时间复杂度,用E(x)表示出现输入x的数学期望,则算法平均时间复杂度A(n)可以表示为:DnxxtxEnA)()()(2023-3-1大学计算机基础23