电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[计算机软件及应用]第1章 绪论

74页
  • 卖家[上传人]:tia****nde
  • 文档编号:70587247
  • 上传时间:2019-01-17
  • 文档格式:PPT
  • 文档大小:1.39MB
  • / 74 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1,数据结构及应用算法教程(修订版),配套课件,2,第1章 绪 论,本章将讲述数据结构的各种概念和定义。 使用类C语言描述数据结构的算法时,引入了少量的C+语言扩展的内容,以有利于算法的表达。 算法分析的方法是评估数据结构及其算法效率的重要依据,该方法将贯穿全书的始终。 考虑内容的连贯,绪论课件中含抽象数据类型的介绍,有关的运用细节可参见教科书的第10章。 讲授本章课程大约需4课时。,3,1.1 数据结构讨论的范畴 1.2 与数据结构相关的概念 1.3 算法及其描述和分析,4,1.1 数据结构讨论的范畴,Niklaus Wirth: Algorithm + Data Structures = Programs 算法 +数据结构 = 程序,程序设计: 算法: 数据结构:,为计算机处理问题编制一组指令集,处理问题的策略,问题的数学模型,5,结构静力分析计算,例如: 数值计算的程序设计问题, 线性代数方程组, 环流模式方程 (球面坐标系),全球天气预报,6,非数值计算的程序设计问题,例一: 求一组(n个)整数中的最大值,算法: ? 模型:?,基本操作是“比较两个数的大小”,取决于整数值的范围

      2、,7,例二:计算机对弈,算法:? 模型:?,对弈的规则和策略,棋盘及棋盘的格局,8,例三:足协的数据库管理,算法:? 模型:?,需要管理的项目? 如何管理? 用户界面?,各种表格,9,概括地说:,数据结构是一门讨论“描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现”的学科。,10,1.2 与数据结构相关的概念,一、基本概念和术语,二、数据结构,三、数据类型和抽象数据类型,11,一、基本概念和术语,所有能被输入到计算机中,且能被计算机处理的符号的集合。,数据:,是计算机操作的对象的总称。,是计算机处理的信息的某种特定的符号表示形式。,12,是数据(集合)中的一个“个体”,数据元素:,是数据结构中讨论的基本单位,13,数据项:,是数据结构中讨论的最小单位,数据元素可以是数据项的集合,例如:,描述一个运动员的数据元素可以是,14,二、数据结构,数据结构是带“结构”的数据元素的集合。,15,假设用三个 4 位的十进制数表示一个含 12 位数的十进制数。,3214,6587,9345 a1(3214),a2(6587),a3(9345),则在数据元素 a1、a2 和

      3、a3 之间存在着“次序”关系 a1,a2、a2,a3,3214,6587,9345 a1 a2 a3,6587,3214,9345 a2 a1 a3,例如:,示例一:,16,在2行3列的二维数组a1, a2, a3, a4, a5, a6 中六个元素之间 存在两个关系:,行的次序关系: 列的次序关系:,row = ,col = ,a1 a3 a5 a2 a4 a6,a1 a2 a3 a4 a5 a6,示例二:,17,在一维数组 a1, a2, a3, a4, a5, a6 的数据元素之间存在如下的次序关系:,| i=1, 2, 3, 4, 5,或者说,数据结构是相互之间存在着某种逻辑关系的数据元素的集合。,可见,不同的“关系”构成不同的“结构”,示例三:,18,数据的逻辑结构可归结为以下四类:,线性结构,树形结构,图状结构,集合结构,19,数据结构的形式定义为:,数据结构是一个二元组,Data_Structures = (D, S),其中:D 是数据元素的有限集, S 是 D上关系的有限集。,20,数据的存储结构, 逻辑结构在存储器中的映象,“数据元素”的映象 ?,“关系”的映象 ?,

      4、21,数据元素的映象方法:,用二进制位(bit)的位串表示数据元素,(321)10 = (501)8 = (101000001)2,A = (101)8 = (001000001)2,22,关系的映象方法:,(表示x, y的方法),顺序映象,以相对的存储位置表示后继关系,例如:令 y 的存储位置和 x 的存储位置之间差一个常量 C,而 C 是一个隐含值,整个存储结构中只含数据元素本身的信息,23,链式映象,以附加信息(指针)表示后继关系,需要用一个和 x 在一起的附加信息指示 y 的存储位置,y x,24,在不同的编程环境中,,存储结构可有不同的描述方法。,当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。,25,例如:,以三个带有次序关系的整数表示一个长整数时,可利用 C 语言中提供的整数数组类型。,typedef int Long_int 3;,定义长整数为:,26,在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。,三、数据类型和抽象数据类型,数据类型,27,例如,C 语言中提供的基本数据类型有:,整型

      5、int,浮点型 float,字符型 char,逻辑型 bool ( C+语言),双精度型 double,实型( C+语言),28,数据类型是一个值的集合和定义在此集合上的一组操作的总称。,不同类型的变量,其所能取的值的范围不同,所能进行的操作不同。,29,抽象数据类型 (Abstract Data Type 简称ADT),是指一个数学模型以及定义在此数学模型上的一组操作。,30,例如,抽象数据类型复数的定义:,数据对象: De1,e2e1,e2RealSet 数据关系: R1 | e1是复数的实数部分 | e2 是复数的虚数部分,ADT Complex ,31,基本操作:,AssignComplex( &Z, v1, v2 ) 操作结果:构造复数 Z,其实部和虚部 分别被赋以参数 v1 和 v2 的值。,DestroyComplex( &Z) 操作结果:复数Z被销毁。,GetReal( Z, &realPart ) 初始条件:复数已存在。 操作结果:用realPart返回复数Z的实部值。,32,GetImag( Z, &ImagPart ) 初始条件:复数已存在。 操作结果:用Imag

      6、Part返回复数Z的虚部值。,Add( z1,z2, &sum ) 初始条件:z1, z2是复数。 操作结果:用sum返回两个复数z1, z2 的 和值。, ADT Complex,33,假设:z1和z2是上述定义的复数,则 Add(z1, z2, z3) 操作的结果,z3 = z1 + z2,即为用户需求的复数求和的结果,34,ADT 有两个重要特征:,数据抽象,用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)。,数据封装,将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。,35,抽象数据类型的形式描述,抽象数据类型可用(D, S, P)三元组表示 其中: D 是数据对象; S 是 D 上的关系集; P 是对 D 的基本操作集。,36,ADT 抽象数据类型名 数据对象:数据对象的定义 数据关系:数据关系的定义 基本操作:基本操作的定义 ADT 抽象数据类型名,其中基本操作的定义格式为:,基本操作名(参数表) 初始条件:初始条件描述 操作结果:操作结果描述,37,赋值参数 只为操作提供输入值。 引用参

      7、数 以&打头,除可提供输入值外, 还将返回操作结果。,初始条件 描述了操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。,操作结果 说明了操作正常完成之后,数据结构的变化状况和应返回的结果。若初始条件为空,则省略之。,38,抽象数据类型的表示和实现,抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。,例如,对以上定义的复数。,39,typedef struct float realpart; float imagpart; complex;,/ -存储结构的定义,/ -基本操作的函数原型说明,void Assign( complex &Z, float realval, float imagval ); / 构造复数 Z,其实部和虚部分别被赋以参数 / realval 和 imagval 的值,40,float GetReal( cpmplex Z ); / 返回复数 Z 的实部值,float Getimag( cpmplex Z ); / 返回复数 Z 的虚部值,void add( complex z1, complex z2,

      8、 complex &sum ); / 以 sum 返回两个复数 z1, z2 的和,41,/ -基本操作的实现,void add( complex z1, complex z2, complex , 其它省略 ,42,1.3 算法及其描述和分析,一、算法,二、算法的描述,三、算法效率的衡量方法和准则,四、算法的存储空间需求,43,算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性:,1有穷性 2确定性 3可行性 4有输入 5有输出,一、算法,44,1. 有穷性 对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即:算法中的每个步骤都能在有限时间内完成。,2. 确定性 对于每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。,45,3. 可行性 算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。,4. 有输入 作为算法加工对象的量值,通常体现为算法中的一组变量。有些输入量需要在算法执行过程中输入,而有的算法表面上可以没有输入,实际上已被

      9、嵌入算法之中。,46,5. 有输出 它是一组与“输入”有确定关系的量值,是算法进行信息加工后得到的结,这种确定关系即为算法的功能。,47,具备上述特征的计算描述,只是具有了算法的基本属性。设计算法时,通常还应考虑满足以下目标: 1.正确性,2.可读性, 3.健壮性 4.高效率与低存储量需求,48,效率和存储量都与问题的规模有关,通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需的 最大存储空间,两者都与问题的规模 有关。,49,二、算法的描述,采用类C语言进行描述(不拘泥于某个具体版本的C语言) 利用了C+对C的部分扩展功能,50,使用引用参数(以&标记),作为函数 输出数据的管道。如:,void programXP (BiTree T, int a, int &sum) / sum的初值为0, / 调用之后,由引用参数sum把算法programXP的 / 计算结果传递给调用者 ,例如:,51,再例如:,简化动态分配空间的描述。如:,使用C语言的风格描述: T=(BiTNode*)malloc(sizeof(BiTNode); 本书采用C+语言的风格描述: T= new BiTNode;,52,三、算法效率的 衡量方法和准则,通常有两种衡量算法效率的方法:,事后统计法,事前分析估算法,缺点:1. 必须执行程序 2. 其它因素掩盖算法本质,53,和算法执行时间相关的因素:,1. 算法选用的策略,2. 问题的规模,3. 编写程序的语言,4. 编译程序产生的机器代码的质量,5. 计算机执行指令的速度,54,一个特定算法的“运行工作量” 的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。,55,假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作:,T (n) = O(f(n),称T (n) 为算法的(渐近)时间复杂度。,56,如何估算 算法的时间复杂度?,57,算法 = 控制结构 + 原操作 (固有数据类

      《[计算机软件及应用]第1章 绪论》由会员tia****nde分享,可在线阅读,更多相关《[计算机软件及应用]第1章 绪论》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.