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