




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机软件技术基础 第1章算法 2 课程介绍 课时安排 理论 28实验 28课程设计 8 上课要求 需要同学在青海大学 教育在线 选课网址 老师的联系方式 办公地点 计算机系三楼计算机教研室Email qijun 参考教材 徐士良编著 计算机软件技术基础 第二版 清华大学出版社 2007 第1章算法 3 第1章算法 1 1算法的基本概念1 2算法描述语言1 3算法设计基本方法1 4算法的复杂度分析 第1章算法 4 1 1算法的基本概念 1 1 1算法的基本特征算法是指解题方案的准确而完整的描述 1 能行性 effectiveness 算法的能行性包括以下两个方面 1 算法中的每一个步骤必须能够实现 2 算法执行的结果要能够达到预期的目的 A 1012 B 1 C 1012A B C 1012 1 1012 0A C B 1012 1012 1 1 第1章算法 5 2 确定性 definiteness 算法的确定性 是指算法中的每一个步骤都必须是有明确定义的 不允许有模棱两可的解释 也不允许有多义性 3 有穷性 finiteness 算法的有穷性 是指算法必须能在有限的时间内做完 即算法必须能在执行有限个步骤之后终止 4 拥有足够的情报一个算法是否有效 还取决于为算法所提供的情报是否足够 通常 算法中的各种运算总是要施加到各个运算对象上 而这些运算对象又可能能具有某种初始状态 这是算法执行的起点或是依据 第1章算法 6 因此 一个算法执行的结果总是与输入的初始数据有关 不同的输入将会有不同的输出 一般来说 当算法拥有足够的情报时 此算法才是有效的 而当提供的情报不够时 算法并不有效 综上所述 算法是一组严谨地定义运算顺序的规则 并且每一个规则都是有效的 且是明确的 此顺序将在有限的次数下终止 第1章算法 7 1 1 2算法的基本要素一个算法通常由两种基本要素组成 1 算法中对数据的运算和操作 算术运算 逻辑运算 关系运算 数据传输 2 算法的控制结构一个算法的功能不仅取决于所选用的操作 而且还与各操作之间的执行顺序有关 算法中各操作之间的执行顺序称为控制结构 一个算法一般都可以用顺序 选择 循环三种基本控制结构组合而成 第1章算法 8 1 2算法描述语言 1 符号与表达式符号是以字母开头的字母和数字的有限串 主要用来表示变量名 数组名等 必要时也用来表示语句标号 例如 loop i i 1有时 为了使算法更清楚 算法中的某些指令或子过程直接用叙述的方式给出 例如 设x是A中的最大项 其中A是一个数组 将x插入到L之中 其中L是某个表 在算法中 算术运算符沿用数学中的表示法 1 关系运算符用 2 逻辑运算符用and 与 or 或 not 非 第1章算法 9 2 赋值语句赋值语句的形式为a e其中a为变量名或数组元素 e为算术表达式或逻辑表达式 如果a和b都是变量名或数组元素 则可用记号 表示将a和b的内容互换 如果想将表达式e的计算结果同时赋给a与b 则可用记号 a b e a b 第1章算法 10 3 控制转移语句无条件转移语句的形式 GOTO标号条件转移语句的形式 IFCTHENS或IFCTHENS1ELSES2 第1章算法 11 4 循环语句WHILE语句WHILECDOS功能等价于如下的IF语句 loop IFCTHEN SGOTOloop 第1章算法 12 FOR语句FORi initTOlimitBYstepDOSFORi initTOlimitDOS当step 0时 功能等价于如下的IF语句 i initloop IFi limitTHEN Si i stepGOTOloop 第1章算法 13 当step 0时 功能等价于如下的IF语句 i initloop IFi limitTHEN Si i stepGOTOloop 第1章算法 14 5 其它语句EXIT 用于退出某个循环 使控制转到包含EXIT语句的最内层的WHILE或FOR循环后面的一个语句去执行 READ 或INPUT 和WRITE 或PRINT 或OUTPUT 语句分别用于输入和输出 RETURN语句用于结束算法的执行 如果算法是在最后一行之后结束 则可以省略RETURN语句 第1章算法 15 1 3算法设计基本方法 1 列举法根据提出的问题 列举所有可能的情况 并用问题中给定的条件检验哪些是需要的 哪些是不需要的 因此 列举法常用于解决 是否存在 或 有多少种可能 等类型的问题 比如 求解不定方程的问题 第1章算法 16 例如 百元买百鸡问题 设每只母鸡值3元 每只公鸡值2元 两只小鸡值1元 现要用100元钱买100只鸡 设计买鸡方案 假设买母鸡I只 公鸡J只 小鸡K只 第1章算法 17 FORI 0TO100DOFORJ 0TO100DOFORK 0TO100DO M I J KN 3I 2J 0 5KIF M 100 and N 100 THENOUTPUTI J K RETURN总循环次数为1013 第1章算法 18 FORI 0TO33DOFORJ 0TO50 1 5IDO K 100 I JIF 3I 2J 0 5K 100 THENOUTPUTI J K RETURN总循环次数为 算法改进 第1章算法 19 include stdio h main inti 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 printf 5d 5d 5d n i j k 第1章算法 20 运行结果如下 2306852570820721115741410761757820080 第1章算法 21 2 归纳法归纳法的基本思想是 通过列举少量的特殊情况 经过分析 最后找出一般的关系 显然 归纳法要比列举法更能反映问题的本质 并且可以解决列举量为无限的问题 但是 从一个实际问题中总结归纳出一般的关系 并不是一件容易的事情 尤其是要归纳出一个数学模型更为困难 从本质上讲 归纳就是通过观察一些简单而特殊的情况 最后总结出一般性的结论 归纳是一种抽象 即从特殊现象中找出一般关系 但由于在归纳的过程中不可能对所有的情况进行列举 因此 最后由归纳得到的结论还只是一种猜测 还需要对这种猜测加以必要的证明 实际上 通过精心观察而得到的猜测得不到证实或最后证明猜测是错的 也是常有的事 第1章算法 22 3 递推所谓递推 是指从已知的初始条件出发 逐次推出所要求的各中间结果和最后结果 其中初始条件或是问题本身已经给定 或是通过对问题的分析与化简而确定 递推本质上也属于归纳法 工程上许多递推关系式实际上是通过对实际问题的分析与归纳而得到的 递推关系式往往是归纳的结果 递推算法在数值计算中是极为常见的 但是 对于数值型的递推算法必须要注意数值计算的稳定性问题 第1章算法 23 例 第1章算法 24 第1章算法 25 第1章算法 26 第1章算法 27 4 递归将一个复杂的问题归结为若干个较简单的问题 然后将这些较简单的每一个问题再归结为更简单的问题 这个过程可以一直做下去 直到最简单的问题为止 第1章算法 28 例编写一个过程 对于输入的参数n 依次打印输出自然数1到n PROCEDUREWRT n FORk 1TOnDOOUTPUTkRETURN include stdio h wrt intn intk for k 1 k n k printf d n k return 非递归算法 第1章算法 29 PROCEDUREWRT1 n IF n 0 THEN WRT1 n 1 OUTPUTn RETURN include stdio h wrt1 intn if n 0 wrt1 n 1 printf d n n return 递归算法 第1章算法 30 递归算法调用过程详解 main wrt1 1 wrt1 intn if n 0 wrt1 n 1 printf d n n wrt1 intn if n 0 wrt1 n 1 printf d n n 1 1 1 0 0 第1章算法 31 5 减半递推技术所谓 减半 是指将问题的规模减半 而问题的性质不变 所谓 递推 是指重复 减半 的过程 第1章算法 32 例二分法求方程实根的减半递推过程 首先取给定区间的中点c a b 2 然后判断f c 是否为0 若f c 0 则说明c即为所求的根 求解过程结束 如果f c 0 则根据以下原则将原区间减半 若f a f c 0 则取原区间的前半部分 若f b f c 0 则取原区间的后半部分 最后判断减半后的区间长度是否已经很小 若 a b 则过程结束 取 a b 2为根的近似值 若 a b 则重复上述的减半过程 第1章算法 33 FUNCTIONROOT a b eps f f0 f a WHILE a b DO c a b 2 f1 f c IF f1 0 THEN ROOT c RETURN IF f0 f1 0 THENa cELSEb c c a b 2 ROOT cRETURN 第1章算法 34 include stdio h include math h doubleroot a b eps f doublea b eps f doublef0 f1 c f0 f a while fabs a b eps c a b 2 f1 f c if f1 0 return c if f0 f1 0 a c elseb c c a b 2 return c 第1章算法 35 6 回溯法 通过对问题的分析 找出一个解决问题的线索 然后沿着这个线索逐步试探 对于每一步的试探 若试探成功 就得到问题的解 若试探失败 就逐步回退 换别的路线再进行试探 第1章算法 36 1 4算法的复杂度分析 1 4 1算法的时间复杂度1 4 2算法的空间复杂度 第1章算法 37 指执行算法所需要的计算工作量 用算法在执行过程中所需基本运算的执行次数来度量算法的工作量 算法的工作量用算法所执行的基本运算次数来度量而算法所执行的基本运算次数是问题规模的函数 算法的工作量 f n 其中n是问题的规模 1 4 1算法的时间复杂度 第1章算法 38 1 平均性态 AverageBehavior 平均性态指用各种特定的数如下的基本运算次数的带权平均值来度量算法的工作量 Dn 表示算法规模为n是 算法执行时所有可能输入的集合 t x 在输入为x时所执行的基本运算次数 p x 是x出现的概率 第1章算法 39 2 最坏情况复杂性 Worst CaseComplexity 指在规模为n时 算法所执行的基本运算的最大次数 第1章算法 40 例采用顺序搜索法 在长度为n的一维数组中查找为x的元素 即从数组的第一个元素开始 逐个与被查值x进行比较 基本运算为x与数组元素的比较 第1章算法 41 平均性态分析 第1章算法 42 最坏情况分析W n max ti 1 i n 1 n 第1章算法 43 1 4 2算法的空间复杂度算法的空间复杂度一般是指执行算法所需要的内存空间 一个算法所占用的存储空间包括算法程序所占的空间 输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间 其中额外空间包括算法程序执行过程中的工作单位以及某种数据结构所需要的附加存储空间 如果额外空间量相对于问题规模来说是常数 则称该算法是原地 inplace 工作的 第1章算法 44 实验一在c环境中实现一个简单算法 实验目的 编写一个简单的算法解决一个具体的问题并在 环境中上机实现 对已学的 语言设计知识作一回顾 实验内容 1 给定三个整数a b c 试写出寻找其中数的一个算法 并分析在平均情况下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 形体房安全管理制度
- 彻底不用气管理制度
- 德力西福利管理制度
- 心里催眠室管理制度
- 快递操作间管理制度
- 急冻库安全管理制度
- 总监办会议管理制度
- 成品罐使用管理制度
- 我校培训费管理制度
- 掘进市场化管理制度
- 清华大学抬头信纸
- Unit 2 Lesson 1 Money vs Success 课件 高中英语新北师大版性选择必修第一册(2022-2023学年)
- 天津大学年《仪器分析实验》期末试题及答案
- 特种设备风险分级管控清单(叉车)
- 《创新创业实践》课程思政教学案例(一等奖)
- 项目激励管理制度
- 核酸的降解与核苷酸代谢课件
- T∕CGMA 033001-2018 压缩空气站能效分级指南
- 设备安全操作培训.ppt
- 浅谈新兴县禅宗文化旅游开发分析解析
- 40篇短文搞定高考英语3500词(共42页)
评论
0/150
提交评论