




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构第一张幻灯片第一页,共四十九页,2022年,8月28日先修课程C语言高等数学离散数学第二页,共四十九页,2022年,8月28日学时及安排学时:17×4学时实验:6个实验考试类型:考试(笔试)成绩=试卷成绩+平时成绩作业:周二中午之前交到教研室第三页,共四十九页,2022年,8月28日公共邮箱用户名:datexinxi@163.com密码:xinxidate第四页,共四十九页,2022年,8月28日第一章绪论1.1什么是数据结构1.2基本概念和术语1.3抽象数据类型的表示与实现1.4算法和算法分析第五页,共四十九页,2022年,8月28日1.1什么是数据结构NiklausWirth
Algorithm+DateStructures=Programs
算法+数据结构=程序设计程序设计:为计算机处理问题编制一组指令集算法:处理问题的策略数据结构:问题的数学模型全球气象预报
球面坐标系下的一般环流模式方程数值计算的程序设计问题第六页,共四十九页,2022年,8月28日1、求一组(n个)整数中的最大值算法?
基本操作是比较两个数的大小模型?整数2、计算机对弈算法?对弈的规则和策略模型?棋盘,棋子3、足协的数据库算法?需要管理的项目?如何管理?用户界面模型?表格,数据库第七页,共四十九页,2022年,8月28日概括的说数据结构描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中的表示和实现。第八页,共四十九页,2022年,8月28日1.2基本概念和术语一、数据与数据结构数据
所有能被输入到计算机中,并被计算机处理的所有这些符号的集合,可见,数据是计算机操作的对象的总称,是计算机处理的信息的载体,是信息的某一种特定的符号表示形式。第九页,共四十九页,2022年,8月28日数据元素数据中的一个“个体”,数据结构中讨论的基本单位。数据项数据结构中讨论的最小单位,数据元素是数据项的集合例如:运动员(数据元素)姓名俱乐部名称出生日期参加日期职务业绩年月日组合项第十页,共四十九页,2022年,8月28日数据对象
是性质相同的数据元素的集合,是数据的一个子集例如,整数数据对象:N={0,±1,±2,…},字母字符数据对象:C={‘A’,‘B’,…
‘Z’,}第十一页,共四十九页,2022年,8月28日数据结构是相互之间存在一种或多种特定关系的数据元素的集合数据元素相互之间的关系称为结构。例如,一个含12位数的十进制数可以用三个4位的十进制数表示,
457834292610—a1(4578),a2(3429),a3(2610)
在a1,a2,a3之间存在“次序”关系
<a1,a2>,<a2,a3>4578,3429,2610a1,a2,a33429,4578,2610a2,a1,a3
≠是带结构的数据元素的集合第十二页,共四十九页,2022年,8月28日又例,2行3列的矩阵{a1,a2,a3,a4,a5,a6}行的次序关系
row={<a1,a2>,<a2,a3>,<a4,a5>,<a5,a6>}列的次序关系
col={<a1,a4>,<a2,a5>,<a3,a6>}a1a2a3a4a5a6
a1,a2,a3a4,a5,a6
a1,a2,a3a5,a4,a6
≠第十三页,共四十九页,2022年,8月28日再例,一维数组{a1,a2,a3,a4,a5,a6}中存在次序关系:
{<ai,ai+1>|i=1,2,3,4,5}第十四页,共四十九页,2022年,8月28日数据的逻辑结构可以归结为以下四类:
(1)线性结构
(2)树形结构
(3)图状结构
(网状结构)(4)集合结构第十五页,共四十九页,2022年,8月28日数据结构的形式定义为:数据结构是一个二元组
Date_Structures=(D,S)
其中D是数据元素的有限集,
S是D上关系的有限集。例如:由a1,a2,a3,a4,a5,a6构成的矩阵定义矩阵是一种数据结构E={D,S}D={a1,a2,a3,a4,a5,a6}S={<ai,ai+1>|i=1,2,3,4,5}第十六页,共四十九页,2022年,8月28日数据的存储结构
——数据结构在计算机中的表示(映像)
——数据结构的存储映像包括数据元素的映像和关系的映像数据元素的映像方法:
用二进制位(bit)的位串表示数据元素
(321)10=(501)8=(101000001)2A=(101)8=(001000001)2第十七页,共四十九页,2022年,8月28日关系的映像方法:(表示<x,y>的方法)
顺序映像:以数据元素在存储器之间一个固定的相对位置的关系来表示数据元素的关系y的存储位置和x的存储位置之间差一个常量C。而C是一个隐含值,整个存储结构中只含数据元素本身的信息。a1a2a3a4a5a6<a1,a2><a1,a3><a1,a4><a3,a5><a3,a6>有序对在计算机中有两种表示方法:顺序映像和链式映像第十八页,共四十九页,2022年,8月28日(a1,a2,a3)a1a2a3第十九页,共四十九页,2022年,8月28日链式映像又称非顺序映像,在整个结构中x和y的存储位置之间没有固定的关系,就是说它们的存储位置是随意的。以附加信息(指针)表示后继关系需要用一个和x在一起的附加信息指示y的存储位置。x元素的存储映像是一个结点,包含两部分信息,其中一部分信息是数据元素x,另一部分信息是指向后继元素的指针。<x,y>yx第二十页,共四十九页,2022年,8月28日在不同的编程环境中,存储结构有不同的描述方法。当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。例如,以三个带有次序关系的整数表示一个长整数时,可利用C语言中提供的整数数组类型,定义整数为:
typedefintLong_int[3]第二十一页,共四十九页,2022年,8月28日三、数据类型在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明他们所属的数据类型。每个类型明显或者隐含的规定了在程序制定期间它的变量或者表达式所明确取值的范围以及允许进行的操作。数据类型是一个值的集合和定义在此集合上的一组操作的总称。第二十二页,共四十九页,2022年,8月28日抽象数据类型(AbstractDataType,简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。ADT有两个重要特征:
数据抽象用ADT描述程序处理的实体时,强调的是其本质的特征,其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)
数据封装将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现规范。第二十三页,共四十九页,2022年,8月28日例如,抽象数据类型复数的定义
ADTComplex{
数据对象:D={e1,e2|e1,e2∈RealSet}
数据关系:R1={<e1,e2>|e1是复数的实数部分,e2是复数的虚数部分}
基本操作:
InitComplex(&Z,v1,v2)操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2的值
DestroyComplex(&Z)操作结果:复数Z被销毁
第二十四页,共四十九页,2022年,8月28日GetReal(Z,&realPart)初始条件:复数已存在操作结果:用realPart返回复数Z的实部GetImage(Z,&ImagPart)初始条件:复数已存在操作结果:用ImagPart返回复数Z的实部Add(z1,z2,&sum)初始条件:z1,z2是复数操作结果:用sum返回两个复数z1,z2的和值}ADTComplex假设:z1,z2是上述定义的复数,则Add(z1,z2,z3)操作的结果将得到第二十五页,共四十九页,2022年,8月28日抽象数据类型的描述方法抽象数据类型可用(D,S,P)三元组表示其中,D是数据对象
S是D上的关系集
P是对D的基本操作集第二十六页,共四十九页,2022年,8月28日1.3抽象数据类型的表示与实现抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。第二十七页,共四十九页,2022年,8月28日1.4算法和算法分析一、算法算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性:
1、有穷性2、确定性3、可行性
4、有输入5、有输出第二十八页,共四十九页,2022年,8月28日1、有穷性
对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即:算法中的每个步骤都能在有限时间内完成;2、确定性
对于每种情况下所应执行的操作,在算法中都有明确的规定,使算法的执行者或阅读者能明确其含义及如何执行,并且在任何条件下,算法都只有一条执行路径;第二十九页,共四十九页,2022年,8月28日3、可行性算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之;4、有输入作为算法加工对象的量值,通常体现为算法中的一组变量。有些输入量需要在算法执行过程中输入,而有的算法表面上可以没有输入,实际上已被嵌入算法之中;5、有输出它是一组与“输入”有确定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法的功能。第三十页,共四十九页,2022年,8月28日作业描述算法的特征。第三十一页,共四十九页,2022年,8月28日课前复习数据
所有能被输入到计算机中,并被计算机处理的所有这些符号的集合,数据元素数据中的一个“个体”,数据结构中讨论的基本单位。数据项数据结构中讨论的最小单位,数据元素是数据项的集合数据对象是性质相同的数据元素的集合,是数据的一个子集数据结构
是带结构的数据元素的集合数据的逻辑结构可以归结为以下四类:
(1)线性结构
(2)树形结构
(3)图状结构(网状结构)(4)集合结构数据结构是一个二元组Date_Structures=(D,S)
其中D是数据元素的有限集,S是D上关系的有限集。抽象数据类型可用(D,S,P)三元组表示其中,D是数据对象S是D上的关系集P是对D的基本操作集算法满足五个特性:1、有穷性2、确定性3、可行性4、有输入5、有输出第三十二页,共四十九页,2022年,8月28日二、算法设计的原则设计算法时,通常应考虑达到以下目标:1、正确性2、可读性3、健壮性4、高效率与低存储量需求第三十三页,共四十九页,2022年,8月28日1、正确性首先,算法应当满足以特定的“规格说明”方式给出的需求。其次,对算法是否“正确”的理解可以有以下四个层次:
a.程序中不含语法错误;
b.程序对于几组输入数据能够得出满足要求的结果;
c.程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果。
d.程序对于一切合法的输入数据都能得出满足要求的结果。第三十四页,共四十九页,2022年,8月28日2、可读性算法主要是为了人的阅读与交流,其次才是为计算机执行。因此算法应该易于人的理解;另一方面,晦涩难懂的程序易于隐藏较多错误而难以调试。第三十五页,共四十九页,2022年,8月28日3、健壮性当输入的数据非法时,算法应当恰当的做出反映或进行相应处理,而不是产生莫名其妙的输出结果。并且,处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以使在更高的抽象层次上进行处理。第三十六页,共四十九页,2022年,8月28日4、高效率和低存储量需求通常算法的效率指的是算法执行的时间,存储量指的是算法执行过程中所需要的最大存储空间,两者都和问题的规模有关。第三十七页,共四十九页,2022年,8月28日三、算法效率的衡量方法和准则
通常有两种衡量算法效率的方法:
事后统计法缺点:1、必须执行程序
2、其它因素掩盖算法本质
事先分析估算法
和算法执行时间有关的因素:1、算法选用的策略2、问题的规模3、编写程序的语言4、编译程序产生的机器代码的质量5、计算机执行指令的速度第三十八页,共四十九页,2022年,8月28日一个特定算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数n表示),或者说,它是问题规模的函数。第三十九页,共四十九页,2022年,8月28日假如,随着问题规模n的增长,算法执行时间T(n)的增长率和f(n)的增长率相同,则可记为:
T(n)=O(f(n))
称T(n)为算法的(渐进)时间复杂度。第四十页,共四十九页,2022年,8月28日算法=控制结构+原操作(固有数据类型的操作)算法的执行时间=
∑原操作(i)的执行次数×每个原操作(i)的执行时间
算法的执行时间与原操作的执行次数之和成正比
从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作在算法中重复执行的次数作为算法运行时间的衡量准则。第四十一页,共四十九页,2022年,8月28日例一for(i=1;i<=n;++i)for(j=1;j<=n;++j){c[i,j]=0;for(k=1;k<=n;++k)c[i,j]+=a[i,k]*b[k,j];}
基本操作:乘法操作时间复杂度:O(n3)第四十二页,共四十九页,2022年,8月28日例二
voidselect_sort(inta[],intn){//将a中整数序列重新排列成自小到大有序的整数序列
for(i=0;i<n-1;++i){j=i;for(k=i+1;k<n;++k)if(a[k]<a[j])j=k;if(j≠i)a[j]←→a[i];}}//select_sort
基本操作:乘法操作时间复杂度:O(n2)第四十三页,共四十九页,2022年,8月28日例三voidbubble_sort(inta[],intn){//将a中整数序列重新排列成自小至大有序的整数序列
for(i=n-1,change=TRUE;i>1&&change;--i){change=FALSE;for(j=0;j<=i;++j)if(a[j]>a[j+1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业网站SEO优化方案与案例分享
- 小学阶段语文写作技巧指导手册
- 通信管道施工关键技术与管理
- 糖果主题派对用品行业跨境出海项目商业计划书
- 粗粮面条健康食谱书行业跨境出海项目商业计划书
- 花卉摄影创新创业项目商业计划书
- 有机农产品品牌推广创新创业项目商业计划书
- 宠物健康饮食书籍创新创业项目商业计划书
- 绿色建筑室内环境创新创业项目商业计划书
- 律师事务所合同审查标准与风险防范
- DB32-T 5160-2025 传媒行业数据分类分级指南
- 2 中国人首次进入自己的空间站 公开课一等奖创新教案 统编版语文八年级上册
- 2025年广告设计师职业技能竞赛(省赛)参考试题(附答案)
- 美业服务能力提升培训课件
- 基孔肯雅热科普宣传学习课件
- 2025年北京市专业技术人员公需科目培训答案
- 2025年北京市房屋租赁合同(自行成交版)模板
- 2025年幼儿园教师教育部门政策法规试题(含答案)
- 2025至2030年中国湖南省中等职业教育市场需求情况分析报告
- 道路养护以及维修方案(3篇)
- 基孔肯雅热医疗机构门诊应急处置演练方案
评论
0/150
提交评论