第1章(绪论)[122页]课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第1章(绪论)[122页]课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 122页 绪论 122 课件
- 资源描述:
-
1、 制作 周幸妮前言 Chapter Chapter 0 0Data structures and Algorithms 从新视角来看待旧问题,需要有创造性的思维,这标志着科学的真正进步。爱因斯坦数据结构与其他课程的关系4Web信息处理人工智能数据库操作系统编译原理图形图像算法分析与设计数据结构计算复杂性理论概率统计计算概论集合与图论教学内容 1绪论 3运算特殊的线性表栈和队列4内容特殊的线性表字符串和多维数组2结点逻辑关系为线性的结构线性表 5结点逻辑关系分层次的非线性结构树 7数据的处理方法排序技术8数据的处理方法索引与查找技术6结点逻辑关系任意的非线性结构图 9经典算法绪 论 Chapte
2、r Chapter 1 1Data Structures and Algorithm Analysis主要内容 数据结构的概念 算法设计的基本要求 从时间和空间角度分析算法效率的方法学习目标 了解数据结构课程的意义 掌握数据结构的概念 掌握算法设计与程序设计的步骤 掌握算法效率的分析评价方法CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事前分析方法算法性能的综合考量CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事前分析方法算法性能的综合考量1.1从编程说起程序的公式表
3、达12算法+数据结构=程序尼古拉斯尼古拉斯沃斯沃斯Niklaus Wirth1934年年2月月15日日算法是处理问题的策略,数据结构是描述问题信息的数据模型,程序则是计算机按照处理问题的策略处理问题信息的一组指令集 计算机解决问题的过程1314程序的开发程序解题程序解题软件工程软件工程具体工作具体工作建模型需求分析阶段提取问题要完成的功能;分析问题涉及的数据对象,找出数据对象之间的关系。设计设计阶段数据结构设计、软件的结构设计、算法设计 编程编码阶段编写程序代码验证测试软件测试与调试CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事
4、前分析方法算法性能的综合考量1.2程序要处理的数据17数值与非数值问题数值计算数值计算非数值计算非数值计算数值计算,具体地说就是有效利用计算机求解数学问题近似解的方法与过程,可以通过抽象出合适的数学模型,然后设计相应的算法来解决。数值计算问题,以浮点算术运算为主,算法成熟所谓“非数值计算”问题,是为了区分前面提到的“数值问题”而言。非数值问题涉及到的数据及数据间的相互关系,一般无法用数学公式、方程等来描述,如排序问题、检索问题等,需要另外设计数据的描述方法和相应的算法来处理。18从下面的无限序列中计算出的值。输出一个表格,在该表格中显示根据这个序列中的1项、2项、3项等等所得的近似值。在第一次
5、得到3.14之前,必须使用这个序列的多少项?如果是得到3.141呢?3.1415呢?3.14159呢?数值问题的例子.114947454344通用公式数据对象数据间关系数据初始化建模型m=1;i=1-1偶数1奇数m取值i取值项数:当前已经用到的项数i系数:控制序列项的正负号 m4+(-1)*m*4/(2*i+1)例19算法顶部伪代码描述赋初值:累加和 x=4;m=1;项数i=1;根据通用公式,x做循环累加直到 x=3.14 时中断循环输出x及i值;算法细化描述累加和 x=4;m=1;i=1;do x=x+(-1)*m*4/(2*i+1)i增加1;m=m*(-1)直到 x=3.14 时中断循环输
6、出x及i值;设计数值问题的例子20数值问题的例子void main()float x=4;int i=1,m=1;while(1)x=x+(float)(-1)*m*4/(2*i+1);i+;m=m*(-1);if (x=3.14-0.000001&x=3.14+0.000001)break;printf(i=%d,x=%fn,i,x);编程要求对任意给出的一个姓名,查找电话号码非数值问题例子1 电话号码查询客户姓名电话身份证号地址张1138*6101131980*李2152*6101131981*王1139*6101131990*张2139*6101131972*李1188*61011319
7、76*表关键字数据项关键字关键字是能唯一标识一个结点的那些数据项数据元素或结点例方法1客户姓名电话身份证号地址张1138*6101131980*李2152*6101131981*王1139*6101131990*张2139*6101131972*李1188*6101131976*王2138*6101131986*顺序结构顺序结构 顺序顺序查找查找非数值问题例子1 电话号码查询问题涉及的对象每客户及其相应的数据项;对象之间的关系数据元素顺序排列;查找指定数据项,输出相应数据项建模型设计非数值问题例子1 电话号码查询方法1顺序结构顺序结构 顺序顺序查找查找有序结构有序结构 折半查找折半查找方法2客
8、户姓名电话身份证号地址李1188*6101131976*李2152*6101131981*王1139*6101131990*王2138*6101131986*张1138*6101131980*张2139*6101131972*非数值问题例子1 电话号码查询问题涉及的对象每客户及其相应的数据项;对象之间的关系数据元素有序排列;折半查找指定数据项,输出相应数据项建模型设计非数值问题例子1 电话号码查询有序结构有序结构 折半查找折半查找方法2索引索引结构结构 分级分级查找查找客户姓名电话身份证号地址李1188*6101131976*0 x2000李2152*6101131981*张1138*6101
9、131980*0 x4000张2139*6101131972*王1139*6101131990*0 x6000王2138*6101131986*姓氏表内地址数量李0 x2000*张0 x4000*王0 x6000*索引表索引表数据表数据表方法3非数值问题例子1 电话号码查询问题涉及的对象索引表客户姓氏、对应数据表中的地址数据表每个客户及其相应的数据项;对象之间的关系索引表数据元素有序排列数据表数据元素顺序排列;建模型先索引表,后数据表设计非数值问题例子1 电话号码查询索引索引结构结构 分级分级查找查找方法328非数值问题例子1 电话号码查询 数据的组织方式和数据的存储方式,都会影响算法的效率结
10、论29在十字路口,要设置几种颜色的交通灯才可保持正常的交通秩序?BCDA十字路口交通灯管理问题非数值问题的例子2 问题涉及的对象对象之间的关系表示AC、BD不能同时通行BDAC 用 表示AC间有一条通路AC建模型某方向通行时,另外某些方向不能通行四个路口 ABCD,及相应的通路;例30AC AB AD BD BA BCCA CD CB DB DCDA BCDA“图”“数据元素”或“结点”对图中的圆圈上色,同一连线上的两个圆圈不同色且颜色种类最少设计非数值问题的例子2 31非数值问题的例子3rootbinlibuseretcmathdsswsunzhouzhaoStack.cppTree.cpp
11、Queue.cpp树“数据元素”或“结点”计算机文件系统结构的表示与管理例CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事前分析方法算法性能的综合考量1.3数据结构的引入问题解决信息表述信息处理计算机解题过程先找出问题中要处理的数据及数据间的联系、组织形式、存储方式、表示方法等,设计适合计算机解题的模型按要求有效地解决问题 数据结构研究的问题 经典数据结构数据表示方法数据表示方法数据存储形式数据存储形式数据运算数据运算CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事前
12、分析方法算法性能的综合考量1.4 数据结构的要素1.4.11.4.11.4.21.4.2数据结构基本术语数据结构基本术语数据结构的三个要素数据结构的三个要素数据的基本单位 可包含多个数据项38基本概念和术语数据元素由某一数据对象及该对象中所有数据成员之间的关系组成数据元素中的不可分割的最小单位客观对象在计算机中的符号表示数据结构数据项数据数据结构基本术语1.4 数据结构的要素1.4.11.4.11.4.21.4.2数据结构基本术语数据结构基本术语数据结构的三个要素数据结构的三个要素数据结构 数据的逻辑结构数据的逻辑结构 体现各结点间的相邻关系,体现各结点间的相邻关系,由数据本身内在特性所决定,
13、由数据本身内在特性所决定,独立于计算机独立于计算机数据的存储结构数据的存储结构数据元素及其逻辑关系在数据元素及其逻辑关系在计算机存储器内的表示计算机存储器内的表示数据的运算数据的运算对数据施加的操作对数据施加的操作数据结构的三个要素数据结构的三个要素数据逻辑结构集合结点间无关系线性结构结点间一对一关系树形结构结点间是一对多关系图形结构结点间是多对多关系数据的逻辑结构数据的逻辑结构数据的存储结构42数据数据存储结构存储结构 顺序存储顺序存储 结点的逻辑关系由存储结点的逻辑关系由存储单元的邻接关系来体现单元的邻接关系来体现 链式存储链式存储 结点的逻辑关系由结点的逻辑关系由附加的指针字段表示附加的
14、指针字段表示 索引存储索引存储 索引项:(关键字,地址)索引项:(关键字,地址)散列存储散列存储 结点地址结点地址F(关键字)(关键字)数据的运算43数据数据运算运算运算的定义运算的定义建立在数据的逻辑结构上建立在数据的逻辑结构上运算的实现运算的实现以数据的存储结构为基础以数据的存储结构为基础常见运算:初始化 判空 求长度 查找 遍历 取值 置值 插入 删除 CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事前分析方法算法性能的综合考量1.5 如何设计算法1.5.11.5.11.5.21.5.2算法的定义及表示方法算法的定义及表示方
15、法算法设计与函数设计的关系算法设计与函数设计的关系1.5.31.5.31.5.41.5.4软件设计描述软件设计描述算法设计的一般步骤算法设计的一般步骤1.5 如何设计算法1.5.11.5.11.5.21.5.2算法的定义及表示方法算法的定义及表示方法算法设计与函数设计的关系算法设计与函数设计的关系1.5.31.5.31.5.41.5.4软件设计描述软件设计描述算法设计的一般步骤算法设计的一般步骤47算法 在有限步骤内求解某一问题所使用的一组定义明确的操作序列,能够在有限时间内,对一定的规范的输入获得所要求的输出。算法算法特征 1有穷性:一个算法必须保证在执行有限步骤后结束,而不是无限的。3可行
16、性:每一个操作步骤都必须在有限的时间内完成。4输入:一个算法可以有多个输入,也可以没有输入。2确定性:算法中每一条指令必须有明确的含义,而不能是含糊不清的有歧义。5输出:一个算法可以有一个或多个输出,没有输出的算法是没有实际意义的。算法的表示49可以帮助程序员开发算法的,由字符组成的非正式语言。可以引用任何具有表达力的方法来最清晰、最简洁地表达算法。伪代码本书对算法的描述采用伪代码的方式1.5 如何设计算法1.5.11.5.11.5.21.5.2算法的定义及表示方法算法的定义及表示方法算法设计与函数设计的关系算法设计与函数设计的关系1.5.31.5.31.5.41.5.4软件设计描述软件设计描
17、述算法设计的一般步骤算法设计的一般步骤long factorial(int n);有关函数的概念函数类型函数类型 函数名(形参类型说明表)函数名(形参类型说明表)声明部分;声明部分;语句部分;语句部分;函数的定义形式函数类型函数类型 函数名(形参类型说明表)函数名(形参类型说明表);函数的声明形式函数名函数名(实参表实参表);函数的调用形式long factorial(int n)int i;long t=1;for(i=1;i=n;i+)t=t*i;return(t);int m;long c;scanf(“%d”,&m);c=factorial(m);输入的数据输入的数据输出的结果输出的结
18、果输出结果的类型输出结果的类型实际参数实际参数C函数实际参数与形式参数的关系52 函数类型函数类型 函数名(函数名(形式参数表形式参数表)声明部分声明部分;语句部分语句部分;函数定义格式函数名(函数名(实际参数表实际参数表)函数调用格式形式参数表中放参数的形式参数表中放参数的定义形式定义形式如基本变量:如基本变量:int xint x如指针:如指针:int int*ptrptr如数组:如数组:int a int a 如结构:如结构:struct node stustruct node stu实际参数表中放参数的实际参数表中放参数的使用形式使用形式如基本变量如基本变量 :x x如指针:如指针:p
19、trptr如数组:如数组:a a如结构:如结构:stustuC函数实际参数与形式参数的关系算法设计与函数设计的关系功能描述输入信息输出信息函数名形参函数类型接口及功能描述此处输出的含义,是指函数传递给调用者的,不是输出到显示器上的此处信息输入方式是调用者传递给函数,不是通过键盘等方式输入1.5 如何设计算法1.5.11.5.11.5.21.5.2算法的定义及表示方法算法的定义及表示方法算法设计与函数设计的关系算法设计与函数设计的关系1.5.31.5.31.5.41.5.4软件设计软件设计描述描述算法设计的一般步骤算法设计的一般步骤软件设计方法55 根据问题的功能要求,按照输入数据的正常情形、边
20、界或特例情形、异常情形等各种情形,给出测试样例。测试用例设计1给出问题包含信息与信息联系的存储结构,用C语言数据类型描述。数据结构描述2根据问题的功能、输入、输出,对应确定函数类型、形参、返回值。函数结构设计3按照自顶向下逐步求精的方法,描述问题的解决步骤。算法描述4按照细化的伪代码给出代码实现,必要时按照测试样例给出测试结果。程序实现5分析问题的时间复杂度、空间复杂度。算法效率分析61.5 如何设计算法1.5.11.5.11.5.21.5.2算法的定义及表示方法算法的定义及表示方法算法设计与函数设计的关系算法设计与函数设计的关系1.5.31.5.31.5.41.5.4软件软件描述描述方法方法
21、算法设计的一般步骤算法设计的一般步骤算法设计的一般步骤571设定算法初始条件3按问题的普遍规律给出算法处理的流程4考虑临界点或特殊点的处理2确定算法的结束条件5考虑异常情况算法设计实例5858算法设计的例子 求n!递推公式 S=S*Tn!1n1step11*2=sstep2s*3=sstep3s*4=sstep4s*5=sS:累乘之积 T:乘数递推法定义例59算法设计实例 求n!功能描述输入信息输出信息factorialint nint值异常:-1正常:n!的结果测试用例设计1接口及功能描述2情形测试数据预期结果问题的一般情形n1按照n!一般定义得出的值临界点或特殊点n=0,n=1按照n!边界
22、定义得出的值异常情况nn 结束输出结果S第二步细化输入n 设S=1,乘数T=1 do S=S*T T增加1 Until (Tn)输出:S算法描述3算法设计实例 求n!61 一般情形边界值异常情形测试值51001-1测试结果120362880011-1float factorial(int n)int i;float t=1;if(n0)return(-1);for(i=1;i=n;i+)t=t*i;return(t);函数实现4测试结果562伪代码描述要点简洁明晰按程序结构特点描述算法步骤,注意格式缩进。内容完整算法开始阶段初始化信息输入信息算法处理阶段循环要素、判断条件等算法结束阶段输出信息
23、程序结构:顺序、循环、分支63n!的例子#include float factorial(int n);float factorial(int n)int i;float t=1;for(i=1;i=n;i+)t=t*i;return(t);main()float c;int m;printf(input m);scanf(%d,&m);c=factorial(m);printf(The%d!is%8.1f,m,c);函数说明函数调用函数定义CONTENTS从编程说起程序要处理的数据数据结构的引入数据结构的要素如何设计算法如何评价算法的优劣算法性能的事前分析方法算法性能的综合考量1.6如何评价
24、算法的优劣1.6.11.6.11.6.21.6.2算法设计的要求算法设计的要求算法效率的度量方法算法效率的度量方法1.6如何评价算法的优劣1.6.11.6.11.6.21.6.2算法设计的要求算法设计的要求算法效率的度量方法算法效率的度量方法67算法设计的要求 正确性程序不含语法错误对输入数据能得出满足要求的结果随意的数据精心选择的典型、苛刻而带有刁难性的几组数据一切合法的输入数据可读性程序员的效率第一健壮性算法对不合理数据输入应该有反应能力和处理能力高效性时间效率高效率指的是算法执行的时间(时间复杂性);存储空间少存储量需求指算法执行过程中所需要的最大存储空间(空间复杂性)空间和时间可以互相
展开阅读全文