大学计算机算法基础_第1页
大学计算机算法基础_第2页
大学计算机算法基础_第3页
大学计算机算法基础_第4页
大学计算机算法基础_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于大学计算机算法基础第1页,共25页,2023年,2月20日,星期三2023/2/282§4.1算法基本概念1.算法的概念为解决一个问题而采取的方法和步骤,称为算法。用计算机来解决问题的方法和步骤,称为计算机算法。分为数值运算算法和非数值运算算法。第2页,共25页,2023年,2月20日,星期三§4.2算法的组成要素一个算法含有两大要素:操作步骤:对于计算机算法而言,包括组成算法的各条指令,也就是对数据的运算和操作。控制结构:控制算法中各操作步骤地执行顺序。通常有三种结构:顺序结构选择结构循环结构第3页,共25页,2023年,2月20日,星期三2023/2/284控制结构及算法举例1、顺序结构:例1:求圆的面积的算法设r表示圆的半径,s表示圆的面积步骤1:输入半径r的值步骤2:s=3.14×r×r步骤3:输出s的值多个步骤由上到下依次执行,顺序不能打乱,称为顺序结构第4页,共25页,2023年,2月20日,星期三2、选择结构:例2:求两个整数a和b中的大者的算法S1:输入a、b的值S2:如果a>b,则执行S3;否则转去执行S4S3:输出a的值,结束S4:输出b的值,结束其中,S3和S4根据条件只能执行一个,称为选择结构第5页,共25页,2023年,2月20日,星期三3、循环结构例3:求出50!的算法设t为被乘数,i为乘数s1:使t=1s2:使i=2s3:t×i→ts4:i+1→is5:转去执行s3s6:输出t的值当i≤50时,为下一次乘法做准备重复执行多次,循环结构第6页,共25页,2023年,2月20日,星期三2023/2/287

顺序结构、选择结构、循环结构是表示一个算法的基本结构。 由以上3种基本结构组成的算法,称为“结构化”的算法,可以解决任何复杂的问题。第7页,共25页,2023年,2月20日,星期三§4.3算法的基本特征1)有穷性算法中的步骤是有限的2)可行性算法中的每一个步骤必须是可执行的3)确定性算法中的每一个步骤必须是含义确切的4)有零个或多个输入5)有一个或多个输出第8页,共25页,2023年,2月20日,星期三§4.3算法的表示方法自然语言流程图伪代码计算机编程语言第9页,共25页,2023年,2月20日,星期三算法的流程图表示法传统流程图第10页,共25页,2023年,2月20日,星期三顺序结构、选择结构和循环结构流程图第11页,共25页,2023年,2月20日,星期三2023/2/2812例如:50!的流程图开始t=1i=2t=t×ii=i+1i<=50输出t结束YN第12页,共25页,2023年,2月20日,星期三N-S图:三种控制结构的N-S图第13页,共25页,2023年,2月20日,星期三1=>t2=>ii×t=>ti+1=>i直到i>50输出结果50!的N-S图第14页,共25页,2023年,2月20日,星期三2023/2/2815算法的伪代码表示法伪代码描述50!:1→t2→iwhilei<=50{t*i→ti+1→i}printt用介于自然语言和计算机语言之间的文字和符号来描述算法第15页,共25页,2023年,2月20日,星期三算法的计算机语言表示法计算机语言(C语言)描述50!:#include<stdio.h>voidmain(){ doublet,i; t=1;i=2; while(i<=50) { t=t*i; i=i+1; } printf(“%.0f”,t);

}必须严格遵守计算机语言的语法规则第16页,共25页,2023年,2月20日,星期三§4.5常用的算法介绍列举法:根据提出的问题,列举所有可能情况,并用问题中给定的条件检验哪些是需要,哪些是不需要。例如:求水仙花数。递推法:从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。递归法:将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。

回溯法:通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再逐步试探。

第17页,共25页,2023年,2月20日,星期三§4.6算法的复杂度解决一个问题,可以有很多算法,如何评价一个算法的好坏?首先算法正确,具有算法的5个基本特征还需考虑:执行算法消耗的时间执行算法消耗的存储空间具有可读性,易于理解健壮性第18页,共25页,2023年,2月20日,星期三评价方法:事前估算事后统计评价结果:称为“算法复杂度”算法复杂度可以分为时间复杂度和空间复杂度第19页,共25页,2023年,2月20日,星期三2023/2/28201.算法的时间复杂度通常把算法中进行简单操作的次数的多少称为算法的时间复杂度算法的时间复杂度往往是问题规模的函数,即

T(n)=O(f(n))

其中,n表示问题的规模,f(n)为问题的规模函数

例如:求n的阶乘算法的时间复杂度为:

T(n)=n-1

通常表示:T(n)=O(n)第20页,共25页,2023年,2月20日,星期三算法的时间复杂度还跟问题的输入数据有关,所以算法的时间复杂度可以用两种形式表达:平均时间复杂度最坏情况时间复杂度第21页,共25页,2023年,2月20日,星期三2023/2/28大学计算机基础22平均时间复杂度平均时间复杂度能够计算出所有输入对应的算法时间复杂度的平均值。若用t(x)表示输入为x时的算法时间复杂度,用E(x)表示出现输入x的数学期望,则算法平均时间复杂度A(n)可以表示为:第22页,共25页,2023年,2月20日,星期三2023/2/2823最坏情况时间复杂度最坏情况时间复杂度是指在所有输入对应的算法时间复杂度中运算次数最多的时间耗费。如果W(n)表示算法最坏情况时间复杂度,则

W(n)=max{t(x)}第23页,共25页,2023年,2月20日,星期三2023/2/28242.算法的空间复杂度算法的空间复杂度是指执行该算法所需的内存空间,记作

S(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论