版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、邢翀软件技术基础第一章 算 法1.1 算法的基本概念1.2 算法设计基本方法1.3 算法的复杂度分析1.1 算法的基本概念1.1.1 算法的基本特征 算法: 是指解题方案的准确而完整的描述。 程序:可以作为算法的一种描述 说明:程序需考虑与方法和分析无关的细节问题, 因为编写程序受到计算机系统运行环境的限 制。【例】寻找给定3个整数a,b,c的中数m如果a=b,a=c,b=c 那么m=b如果a=b,a=c,b=b,a=c那么m=a如果a=c那么m=a如果a=b,a=c 那么m=c如果a=b,a=c,b=c 那么m=b PROCEDURE MID(a,b,c,m)IF a b THEN IF a
2、 c THEN IF b c THEN m=b ELSE m=c ELSE m=a ELSE IF a c THEN m=a ELSE IF b c THEN m=c ELSE m=b RETUTE1.1 算法的基本概念1.1 算法的基本概念1.1.1 算法的基本特征1.能行性(effectiveness) 算法中的每一个步骤必须能够实现。 算法执行的结果要能够达到预期的目的。1.1 算法的基本概念1.1.1 算法的基本特征 算法是指解题方案的准确而完整的描述。2.确定性(Definiteness) 指算法中的每一个步骤都必须是有明确定义的,不允许出现多义性。3.有穷性(Finiteness)
3、指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 4.拥有足够的情报:指足够的输入数据。 根据算法的特征可以将定义概括为: 算法是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。1.1 算法的基本概念1.1.2 算法的基本要素1.算法中对数据的运算和操作 算术运算 逻辑运算 关系运算 数据传输2.算法的控制结构:算法中各操作数之间的执行顺序(包括顺序、选择、循环三种基本控制结构)1.1 算法的基本概念1.2 算法设计基本方法1. 列举法 根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的
4、。 因此,列举法常用于解决“是否存在”或“有多少种可能”等类型的问题,例如求解不定方程的问题。【例】设每只母鸡值3元,每只公鸡值2元,两只小鸡值1元。现要用100元钱买100只鸡,设计买鸡方案。【解题】假设买母鸡I只,公鸡J只,小鸡K只。FOR I0 TO 100 DOFOR J0 TO 100 DOFOR K0 TO 100 DO MIJK N3I2J0.5K IF (M100)and(N100) THENOUTPUT I,J,K RETURN1.2 算法设计基本方法总循环次数为1013 FOR I0 TO 33 DOFOR J0 TO 501.5I DO K100IJ IF (3I2J0.
5、5K100) THEN OUTPUT I,J,K RETURN1.2 算法设计基本方法总循环次数为#include#includeusing namespace std;int main()int i,j,k; for (i=0;i=33;i+) for(j=0;j=50-1.5*i;j+)k=100-i-j; if(3*i+2*j+0.5*k=100.0)coutsetw(5)isetw(5)jsetw(5)kendl;return 0;1.2 算法设计基本方法 运行结果:2 30685 25708 20 7211 15 7414 10 7617 5 7820 0 802. 归纳法 通过列举
6、少量的特殊情况,经过分析,最后找出一般的关系。3. 递推 从已知的初始条件出发,逐次推出所要求的各中间和最后结果。1.2 算法设计基本方法【例】1.2 算法设计基本方法1.2 算法设计基本方法4. 递归 将一个复杂的问题归结为若干个较简单的问题,然后将这些较简单的每一个问题再归结为更简单的问题,这个过程可以一直做下去,直到最简单的问题为止。 【例】编写一个过程,对于输入的参数n,依次打印输出自然数1到n。PROCEDURE WRT(n)FOR k1 TO n DO OUTPUT kRETURN1.2 算法设计基本方法 输出自然数1到n的递归算法1.2 算法设计基本方法 #include std
7、io.h wrt1(int n) if (n!0) wrt1(n1); printf(“%dn”,n); return; PROCEDURE WRT1(n) IF (n0) THEN WRT1(n1) OUTPUT n RETURN5. 减半递推技术 减半: 是指将问题的规模减半,而问题的性质不变。 递推: 是指重复“减半”的过程。1.2 算法设计基本方法1.2 算法设计基本方法【例】设方程f(x)=0在区间a,b上有实根,且f(a)与f(b)异号,利用二分法求该方程区间a,b上的实根。首先取给定区间的中点c(ab)/2。然后判断f(c)是否为0。 若f(c)0,则说明c即为所求的根,求解过程
8、结束; 如果f(c)0,则根据以下原则将原区间减半: 若f(a)f(c)0,则取原区间的前半部分; 若f(b)f(c)0,则取原区间的后半部分。最后判断减半后的区间长度是否已经很小: 若|ab|,则过程结束,取(ab)/2为根的近似值; 若|ab|,则重复上述的减半过程。6. 回溯法 通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,对于每一步的试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再进行试探。1.2 算法设计基本方法1.3 算法的复杂度分析算法的复杂度主要包括时间复杂度和空间复杂度。 1.4.1 算法的时间复杂度1.4.2 算法的空间复杂度1.
9、3 算法的复杂度分析1.4.1 算法的时间复杂度指执行算法所需要的计算工作量算法的工作量f(n)1. 平均性态(Average Behavior) 是指用各种特定输入下的基本运算次数的带权平均值来度量算法的工作量:p(x)指x出现的概率(输入为x的概率),t(x)指算法在输入为x时所执行的基本运算次数,Dn表示当规模为n时算法执行时所有可能输入的集合。平均性态定义为:1.3 算法的复杂度分析2. 最坏情况复杂性 (WorstCase Complexity) 指在规模为n时,算法所执行的基本运算的最大次数。【例】采用顺序搜索法,在长度为n的一维数组中查找为x的元素。即从数组的第一个元素开始,逐个与被查值x进行比较。 基本运算为x与数组元素的比较。1.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 债务纠纷合同(2篇)
- 公共事业资产管理合同
- 2025年无机械动力飞机项目发展计划
- 《职场沟通》电子教案 项目九 商务谈判沟通教案
- 门店租赁协议模板
- 福州汽车租赁合同
- 厂房租赁合同书范文
- 公寓别墅租赁服务合同
- 八年级语文上册第一单元5国行公祭为佑世界和平教案新人教版1
- 八年级道德与法治上册第三单元勇担社会责任第七课积极奉献社会第2框服务社会教案新人教版
- 水生生物学智慧树知到期末考试答案章节答案2024年宁波大学
- 针灸推拿治疗失眠PPT
- ISO-8467-1993高锰酸盐指数
- 防雷和接地监理实施细则-
- 粮食仓储组织架构设计及全套管理规章制度
- 《人员素质测评理论与方法》电子版本
- 陶瓷色料的技术PPT课件
- 幼儿园食品安全工作计划四篇
- 课程设计YA32-350型四柱万能液压机液压系统设计
- 中国工业数据库介绍
- 弱电智能化设计服务建议书(共35页)
评论
0/150
提交评论