




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常用算法与程序设计 1 第1章 算法与程序设计概述 常用算法与程序设计 2 主要内容 1 1算法与算法描述算法定义算法描述1 2算法复杂性分析时间复杂度空间复杂度1 3程序设计简介算法与程序结构化程序设计 常用算法与程序设计 3 1 1算法与算法描述 1 1 1算法算法是程序设计的基础 是计算机科学的核心 算法是指解决某一问题的运算序列 或者说算法是问题求解过程的运算描述 一个算法由有限条可完全机械地执行的 有确定结果的指令组成 常用算法与程序设计 4 3 算法是满足下列特性的指令序列 1 确定性组成算法的每条指令是清晰的 无歧义的 2 可行性算法中的运算是能够实现的基本运算 每一种运算可在有限的时间内完成 3 有穷性算法中每一条指令的执行次数有限 执行每条指令的时间有限 4 输入一个算法有零个或多个输入 5 输出一个算法至少产生一个量作为输出 常用算法与程序设计 5 4 选择算法的标准 通常求解一个问题可能会有多种算法可供选择 选择的主要标准是算法的正确性和可靠性 其次是算法所需要的存储空间少和执行时间短等 在实际工程中我们遇到许多高难度计算问题 有的问题在巨型计算机上用普通算法来求解可能要数个月的时间 而且很难找到精确解 但用一个好的算法 即使在普通的个人电脑上 可能只需数秒钟就可以求得解答 常用算法与程序设计 6 1 1 2算法描述 1 描述算法的方式算法是问题的程序化解决方案 一个问题可以设计不同的算法来求解 同一个算法可以采用不同的形式来表述 描述算法可以有多种方式 如自然语言方式 流程图方式 伪代码方式 计算机语言表示方式与表格方式等 当一个算法使用计算机程序设计语言描述时 就是程序 本书采用C语言与自然自然语言相结合来描述算法 常用算法与程序设计 7 2 算法描述举例 例1 1 求两个整数a b a b 的最大公约数的欧几里德算法 1 a除以b得余数r 若r 0 则b为所求的最大公约数 2 若r 0 以b为a r为b 继续 1 注意到任两整数总存在最大公约数 上述辗转相除过程中余数逐步变小 相除过程总会结束 欧几里德算法又称为 辗转相除 法 具体描述如下 常用算法与程序设计 8 输入正整数a b if ab r a b while r 0 a b b r 实施 辗转相除 r a b printf 最大公约数b 常用算法与程序设计 9 算法复杂性的高低体现运行该算法所需计算机资源的多少 算法的复杂性越高 所需的计算机资源越多 反之 算法的复杂性越低 所需的计算机资源越少 计算机资源 最重要的是时间资源与空间资源 需要计算机时间资源的量称为时间复杂度 需要计算机空间资源的量称为空间复杂度 算法分析是指对算法的执行时间与所需空间的估算 定量给出运行算法所需的时间数量级与空间数量级 1 2算法复杂性分析 常用算法与程序设计 10 在分析算法时 隐藏细节的数学表示法成为大写O记法一个算法的时间复杂度是指算法运行所需的时间 一个算法的运行时间取决于算法所需执行的语句 运算 的多少 算法的时间复杂度通常用该算法执行的总的语句 运算 的数量级决定 就算法分析而言 一条语句的数量级即执行它的频数 一个算法的数量级是指它所有语句执行频数之和 1 2 1时间复杂度 常用算法与程序设计 11 1 时间复杂度定义 定义 对于一个数量级为的算法 如果存在两个正常数c和m 对所有的n m 有则记作 称该算法具有用的运行时间 是指当n足够大时 该算法的实际运行时间不会超过的某个常数倍时间 常用算法与程序设计 12 2 例如程序段 for k 1 k n k x x y y x y s x y 每个赋值语句执行频数为n 该算法的数量级为3n 其计算时间即时间复杂度为O n 常用算法与程序设计 13 3 例如程序段 for t 1 k 1 k n k t t 2 for j 1 j t j s s j 内循环赋值语句执行频数算法的时间复杂度为O 常用算法与程序设计 14 4 算法时间关系 常见多项式时间算法 常见指数时间算法 一般地 当n取值比较大时 在计算机上实现指数时间算法是不可能的 就是比时间复杂度高的多项式时间算法运行也很困难 常用算法与程序设计 15 5 两个定理定理1 1时间复杂度符号O有以下运算规则 O f O g O max f g 1 1 O f O g O fg 1 2 定理1 2如果是n的m次多项式 则 1 3 常用算法与程序设计 16 例1 3 估算下列程序段代表算法的时间复杂度 1 t 1 m 0 for k 1 k n k t t 2 for j t j n j m 时间复杂度为O nlogn 常用算法与程序设计 17 2 m 0 for k 1 k n k for j k k j n j m 时间复杂度为O 注意 1 2 中m 语句的执行次数的计算 具体见教材详列 常用算法与程序设计 18 一个算法的运行时间 与问题的规模相关 也与输入的数据相关 对算法的改进与优化 主要表现在有效缩减算法的运行时间与所占空间 例如把求解某一问题的算法时间从优化缩减为就是一个了不起的成果 或者把求解某一问题的算法时间的系数缩小 例如从2n缩小为3n 2 尽管其时间数量级都是 系数缩小了也是一个算法改进的成果 常用算法与程序设计 19 算法的空间复杂度是指算法运行的存储空间 是实现算法所需的内存空间的大小 一个程序运行所需的存储空间通常包括固定空间需求与可变空间需求两部分 固定空间需求包括程序代码 常量与结构变量等所占的空间 可变空间需求包括数组元素所占的空间与运行递归所需的系统栈空间等 二维或三维数组是空间复杂度高的主要因素之一 在算法设计时 为降低空间复杂度 要注意尽可能少用高维数组 1 2 2空间复杂度 常用算法与程序设计 20 1 2 1算法与程序1 基本概念算法是程序设计的基础 是程序的核心 程序是某一算法用计算机程序设计语言的具体实现 具体来说 一个算法使用C语言描述 就是C程序 上机实践是检验算法与程序的标准 1 2程序设计简介 常用算法与程序设计 21 2 程序的内容一个程序应包括对数据的描述与对运算操作的描述两个方面的内容 著名计算机科学家沃思 NikiklausWirth 就此提出一个公式 数据结构 算法 程序 1 4 数据结构是对数据的描述 而算法是对运算操作的描述 常用算法与程序设计 22 1 4程序实现求两个整数a b的最大公约数 a b 的欧几里德算法 见例1 1 并应用欧几里德算法求n个整数的最大公约数 解 在欧几里德算法描述基础上进行数据描述即为求整数的最大公约数的程序 1 求两个整数的最大公约数程序实现设置算法中的相关变量a b c r为长整型变量 即有 3 程序设计举例 常用算法与程序设计 23 求整数a b的最大公约数 a b includevoidmain longa b c r printf 请输入整数a b scanf ld ld 输出求解结果 常用算法与程序设计 24 2 求n个整数的最大公约数程序实现对于3个以上整数 最大公约数有以下性质 a1 a2 a3 a1 a2 a3 a1 a2 a3 a4 a1 a2 a3 a4 应用这一性质 要求n个数的最大公约数 先求出前n 1个数的最大公约数b 再求第n个数与b的最大公约数 要求n 1个数的最大公约数 先求出前n 2个数的最大公约数b 再求第n 1个数与b的最大公约数 依此类推 因而 要求n个整数的最大公约数 需应用n 1次欧几里德算法 为输入与输出方便 把n个整数设置成m数组 m数组与算法中的相关变量a b c r设置为长整型变量 个数n与循环变量k设置为整型 即有 常用算法与程序设计 25 求n个整数的最大公约数 includevoidmain intk n longa b c r m 100 printf 请输入整数个数n 输入原始数据 scanf d 常用算法与程序设计 26 1 3 2结构化程序设计1 几个概念不应该把面向对象与面向过程对立起来 在面向对象程序设计中仍然要用到面向过程的知识 面向过程程序设计通常由结构化程序设计实现 任何简单或复杂的算法都可以由顺序结构 选择结构和循环结构这三种基本结构组合而成 顺序结构 选择结构和循环结构被称为程序设计的三种基本结构 也是结构化程序设计必须采用的结构 常用算法与程序设计 27 2 结构化程序设计的基本要点 1 自顶向下 逐步求精 2 模块化设计 3 结构化编码 自顶向下是指对设计求解的问题要有一个全面的理解 从问题的全局入手 把一个复杂问题分解成若干个相互独立的子问题 逐步求精是指程序设计的过程是一个渐进的过程 常用算法与程序设计 28 模块化就是把大程序按照功能分为若干个较小的程序 一个程序是由一个主控模块和若干子模块组成的 主控模块用来完成某些公用操作及功能选择 而子模块用来完成某项特定的功能 常用算法与程序设计 29 去图书市场买书 第一步 有买书的意愿第二步 确定要买什么书第三步 确定到哪个书店或图书市场才可以买到需要的书第四步 坐车或步行到目的书店或目的图书市场第五步 找到需要的图书第六步 付款 常用算法与程序设计 30 开始 有买书的意愿 确定要买什么书 确定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62911:2025 EN-FR Audio,video and information technology equipment - Routine electrical safety testing in production
- 【正版授权】 IEC 61340-4-6:2025 RLV EN Electrostatics - Part 4-6: Standard test methods for specific applications - Wrist straps
- 2025至2030中国电疗仪器行业市场发展分析及发展趋势与投资前景预测报告
- 2025至2030中国电动吸烟者行业产业运行态势及投资规划深度研究报告
- 2025至2030中国猪浓缩饲料行业发展趋势与发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国物流监控系统行业深度研究及发展前景投资评估分析
- 新舟60培训课件
- 井下开采安全培训课件
- 商业培训中的学习心理技巧
- 教育心理学与现代教学技术结合的学生动机研究
- 企业道路交通安全宣传
- 635MPa级热轧带肋高强钢筋应用技术规程
- 中专《电工基础》课程标准
- 他汀不耐受的临床诊断与处理中国专家共识(2024)解读课件
- 2024年7月国家开放大学法学本科《知识产权法》期末考试试题及答案
- 2024移动金融客户端应用软件安全管理规范标准
- 2025版《新亮剑》高中物理:第九章 静电场及其应用 静电场中的能量含答案
- 40000平方米人民医院项目监理招标文件
- JC-T 902-2002 建筑表面用有机硅防水剂
- 数字资产监管框架优化
- 音乐考试真题
评论
0/150
提交评论