




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 绪论,1.1 什么是数据结构,1.2 基本概念和术语,1.4 算法和算法分析,1.3 抽象数据类型的表示与实现,一、算法,二、算法设计的要求,三、算法效率的度量,四、算法的存储空间需求,1.4 算法和算法分析,1有穷性 2确定性 3可行性 4有输入 5有输出,一、算法,算法(algorithm):是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。,一个算法还具有以下5个重要特性:,1有穷性 对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即: 算法中的每个步骤都能在有限时间内完成;,2确定性 对于每种情况下所应执行的操作,在算法中都有确切的规定
2、,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径;,3可行性 算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之;,4有输入 作为算法加工对象的量值,通常体现为算法中的一组变量。有些输入量需要在算法执行过程中输入,而有的算法表面上可以没有输入,实际上已被嵌入算法之中;,5有输出 它是一组与“输入”与确 定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法的功能。,二、算法设计的原则,设计算法时,通常应考虑达到以下目标:,1正确性,2. 可读性,3健壮性,4高效率与低存储量需求,1正确性,首先,算法应当满足以特定的
3、“规格说明”方式给出的需求。,其次,对算法是否“正确”的理解可以有以下四个层次:,a程序中不含语法错误;,b程序对于几组输入数据能够得出满足要求的结果;,c程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;,通常以第 c 层意义的正确性作为衡量一个算法是否合格的标准。,d程序对于一切合法的输入数据都能得出满足要求的结果;,2. 可读性,算法主要是为了人的阅读与交流, 其次才是为计算机执行。因此算法应该易于人的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以调试;,3健壮性,当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而不是产生莫名奇妙的输出结果。
4、并且,处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。,4高效率与低存储量需求,通常,效率指的是算法执行 时间;存储量指的是算法执行过程 中所需的最大存储空间。两者都与 问题的规模有关。,三、算法效率的度量,通常有两种衡量算法效率的方法:,事后统计法,事前分析估算法,缺点:1。必须执行程序 2。其它因素掩盖算法本质,和算法执行时间相关的因素:,1算法选用的策略,2问题的规模,3编写程序的语言,4编译程序产生的机器代码的质量,5计算机执行指令的速度,一个特定算法的“运行工作量” 的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它
5、是问题规模的函数。,一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量度。,假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作:,T (n) = O(f(n),称T (n) 为算法的(渐近)时间复杂度,如何估算 算法的时间复杂度?,算法 = 控制结构 + 原操作 (固有数据类型的操作),算法的执行时间 = 原操作(i)的执行次数原操作(
6、i)的执行时间,算法的执行时间 与 原操作执行次数之和 成正比,从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则。,语句频度是指的是该语句重复执行的次数。,例 一 两 个 矩 阵 相 乘,void mult(int a, int b, int /for /mult,基本操作: 乘法操作,时间复杂度: O(n3),由于算法的时间复杂度考虑的只是对于问题规模n的增长率,在难以精确计算基本操作执行次数(语句频度)的情况下,只需要求出它关于n的增长率或阶即可。通常算法中基本操作重复执行的次数随问题的输入数据集不同而不同,对这类算法的分析,其一是计算算法的平均时间复杂度,其二是计算最坏情况下的时间复杂度。,常用的时间复杂度有如下的关系: O(1)=O(log2n)=O(n) =O(nlog2n)=O(n2)=O(2n),四、算法的存储空间需求,算法的空间复杂度定义为:,表示随着问题规模 n 的增大, 算法运行所需存储量的增长率 与 g(n) 的增长率相同。,S(n) = O(g(n),算法的存储量包括:,1输入数据所占空间,2程序本身所占空间;,3辅助变量所占空间。,若输入数据所占空间只取决与问题 本身,和算法无关,则只需要分析除 输入和程序之外的辅助变量所占额外 空间。,若所需额外空间相对于输入数据量 来说是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学问思辨行培训课件
- 教育科技创业公司发展机遇与挑战
- 教育科技的力量优化教学流程
- 挖掘教育大数据潜力无限的决策支持系统
- 超市收银员培训手册
- 全球创新药研发成本控制与效益分析2025年研究报告
- Cationomycin-生命科学试剂-MCE
- 新疆维吾尔自治区七校联考2024-2025学年九年级化学第一学期期末学业质量监测模拟试题含解析
- 唐山师范学院《农产品市场营销》2023-2024学年第一学期期末试卷
- 2025届江苏省邗江区化学九上期末综合测试试题含解析
- 公司安全隐患排查记录表
- 粮食的形态与化学组成第二节粮食的主要化学成分下64课件
- 中国农田水利行业发展前景及发展策略与投资风险研究报告2025-2028版
- 余料使用管理制度
- 农业面源防治课件
- 2025至2030中国氨基吡啶行业项目调研及市场前景预测评估报告
- 2025-2030中国商业展示道具市场应用前景及投资价值评估报告
- 2025年甘肃省武威市民勤县西渠镇人民政府选聘专业化管理村文书笔试参考题库及1套完整答案详解
- 防洪防汛安全知识试题及答案
- T/CCMA 0137-2022防撞缓冲车
- 江苏省2025年中职职教高考文化统考数学试题答案
评论
0/150
提交评论