已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构,(C语言版),第一章绪论,1.1什么是数据结构1.2基本概念和术语1.3抽象数据类型的表示与实现1.4算法和算法分1.4.1算法1.4.2算法设计的要求1.4.3算法效率的度量1.4.4算法的存储空间的需求,1.1什么是数据结构,数据结构是在整个计算机科学与技术领域上广泛被使用的术语。数据结构是数据存在的形式,用来反映一个数据的内部构成,即一个数据由哪些成分数据构成,以什么方式构成,呈什么结构。数据是指由有限的符号组成的元素的集合,结构是元素之间的关系的集合。,引例,书目自动检索系统,书目文件,人机对奕问题,十字路口的交通灯管理问题,1.2基本概念,1、数据(data)数据是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。主要分为数值性数据和非数值性数据。,2、数据元素(dataelement),数据的基本单位。在计算机程序中常作为一个整体进行考虑和处理。有时一个数据元素可以由若干数据项(DataItem)组成。数据项是具有独立含义的最小标识单位,且是不可分割的。数据元素又称为元素、结点、记录。,1.2基本概念,3、数据对象(dataobject),数据对象是具有相同性质的数据元素的集合,是数据的一个子集。整数数据对象N=0,1,2,字母字符数据对象C=A,B,Z,1.2基本概念,4、数据结构(datastructure),指某一数据对象的所有数据成员之间的关系。#任何问题中的数据元素都不是孤立存在的,他们之间必定存在某种关系,这种数据元素之间的关系称为结构(Structure)。根据数据元素之间关系的不同特性,通常有4类基本结构:集合、线性结构、树形结构、图结构或网状结构。,1.2基本概念,根据数据元素之间关系的不同特性,可将所研究的内容分为四种:集合线性结构树形结构图状结构,集合:数据元素之间除了“同属于一个集合”的关系外,不存在其他的关系。例如:S=a0,a1,a8,a3,a100图结构:结构中的数据元素之间存在多个多对多的关系。,数据结构的形式定义:数据结构是一个二元组Data_Structure=D,R其中,D是数据元素的有限集,R是D中所有数据成员之间的关系的有限集合。例:一个课题组有一位教师,1-3名硕士生,1-6名本科生,成员之间的关系是:教师指导研究生,每个研究生指导1-2名本科生。定义如下的数据结构:Group=(D,R)Group=(D,R)其中P=T,G1,G2,.Gn,s11,snm,1=n=3,1=m=2,数据结构所研究的主要内容:,R=R1,R2R1=|1|1=i=n,1=j=m,1=n=3,1=m=2数据元素间的逻辑关系,即数据的逻辑结构结构定义一中的关系;数据元素及其关系在计算机存储器内的存储安排,即数据的存储结构;数据的运算,即对数据元素施加的操作(算法)。,数据的逻辑结构,数据的逻辑结构从逻辑关系上描述数据,与数据的存储无关;数据的逻辑结构可以看作是从具体问题抽象出来的数据模型;数据的逻辑结构与数据元素本身的形式、内容无关;数据的逻辑结构与数据元素的相对位置无关。,数据的逻辑结构分类,线性结构线性表栈队列串非线性结构树图(或网络),数据的存储结构(物理结构),数据的存储结构是逻辑结构在计算机中的表示或映像;两种数据的存储结构形式:顺序存储:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。如线性表。非顺序存储:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。如链表。,1.3抽象数据类型,数据类型(datatype)定义:一组性质相同的值的集合,以及定义于这个值集合上的一组操作的总称.数据类型可分为2大类:原子类型:非结构形的且其值是不可分解的。如C语言中的基本数据类型char字符型、int整型、float浮点型、double双精度型、void无值、指针类型、枚举类型(enum)。,数据类型就是数据结构,不过它是从编程者的角度来使用的。数据类型是模板,必须定义属于某种数据类型的变量,才能参加运算。基本数据类型可以看作是计算机中已实现的数据结构。构造数据类型由基本数据类型或构造数据类型组成。,1.3抽象数据类型,抽象数据类型的概念(ADT:AbstractDataTypes),是指一个数学模型以及定义在该模型上的一组操作。仅取决于它的逻辑特性,而与物理特性无关。由用户定义,用以表示应用问题的数据模型由基本的数据类型组成,并包括一组相关的服务(或称操作),抽象数据类型的描述方法,抽象数据类型可用(D,S,P)三元组表示,其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。ADT抽象数据类型名数据对象:数据对象的定义数据关系:数据关系的定义基本操作:基本操作的定义ADT抽象数据类型名其中,数据对象和数据关系的定义用伪码(不真正执行的符号)描述,基本操作的定义格式为:,基本操作名(参数表)初始条件:初始条件描述操作结果:操作结果描述基本操作有两种参数:赋值参数只为操作提供输入值;引用参数以in-1;i+)/n-1趟从ai检查到an-1;若最小整数在ak,交换ai与ak;细化程序:程序SelectSort,算法设计思路:自顶向下,逐步求精,voidselectSort(inta,intn)/对n个整数a0,a1,an-1按递增顺序排序for(inti=0;in-1;i+)intk=i;/从ai查到an-1,找最小整数,在akfor(intj=i+1;jn;j+)if(ajak)k=j;inttemp=ai;ai=ak;ak=temp;,以8,5,7,6,9,10为例:a0=8,a1=5a5=10开始时:i=0,k=i=0,ak=8,j=i+1=1aj=a1=5ak=8k=j=1交换:temp=ai=8,ai=ak,ak=a1,8,5,正确性:不含有语法错误;对于各种合法的输入数据能够得到满足规格说明要求的结果。可读性:要求程序有较好的人机交互性有助于人们对算法的理解。健壮性:对输入的非法数据能作出适当的响应或处理。效率与低存储需求:主要指算法的执行时间和所需的最大存储空间,这两方面主要和问题的规模有关。,算法设计的目标,算法的性能分析与度量,算法的后期测试:在算法中的某些部位插装时间函数time()测定算法完成某一功能所花费时间算法的事前估计:空间复杂度时间复杂度,插装time()的计时程序doublestart,stop;time(,顺序搜索(SequenialSearch)intseqsearch(inta,intn,intx)/在a0,an-1中搜索xinti=0;while(in,与算法执行时间相关的因素有:,1)算法选用的策略2)问题的规模3)编写程序的语言4)编译程序产生的机器代码的质量5)计算机执行指令的速度通常把算法中所包含的简单操作次数的多少叫做算法的时间复杂度。算法的执行时间与简单操作执行次数之和成正比。简单操作次数越少,运行时间也越少。,时间复杂度度量,运行时间=算法中每条语句执行时间之和。每条语句执行时间=该语句的执行次数(频度)*语句执行一次所需时间。语句执行一次所需时间取决于机器的指令性能和速度和编译所产生的代码质量,很难确定。设每条语句执行一次所需时间为单位时间,则一个算法的运行时间就是该算法中所有语句的频度之和。,例1求两个n阶方阵的乘积C=AB,voidMatrixMultiply(intAnn,intBnn,intCnn)for(inti=0;in;i+)n+1for(intj=0;jn;j+)n(n+1)Cij=0;n2for(intk=0;kn;k+)n2(n+1)Cij=Cij+Aik*Bkj;n3,2n3+3n2+2n+1,intsum(intb,intn)ints=0;/执行1次for(inti=0;i=n)gotomark2;/n+1次S+=bi;/n次i+;/n次Gotomark1;/n次Mark2:returns;小计:4n+2,时间复杂度度量(续),设解决一个问题的规模为n,简单操作被重复执行的次数是n的一个函数f(n),假如,随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作:T(n)=O(f(n)其中T(n)叫算法的渐进时间复杂度,简称时间复杂度,O是Order(数量级)的首字母,意思是T(n)与f(n)只差一个常数倍。例1中:T(n)=2n3+3n2+2n+1=O(n3),渐进时间复杂度的计算,加法规则针对并列程序段T(n,m)=T1(n)+T2(m)=O(max(f(n),g(m)注:clog2nnnlog2nn2n32n3nn!,变量计数,x=0;y=0;for(intk=0;kn;k+)x+;for(inti=0;in;i+)for(intj=0;j=0算法的语句i-的频度不仅与n有关,还与A中各元素的取值,以及k的取值有关。,算法的空间复杂度,空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量,记作:S(n)=O(g(n)表示随着问题规模n的增大,算法运行所需存储量的增长率与g(n)的增长率相同。,算法的存储量,包括:1输入数据所占空间;2程序本身所占空间;3辅助变量所占空间。若输入数据所占空间只取决与问题本身,和算法无关,则只需要分析除输入和程序之外的额外空间。若所需额外空间相对于输入数据量来说是常数,则称此算法为原地工作。若所需存储量依赖于特定的输入,则通常按最坏情况考虑。,存储空间的两个部分,存储空间的固定部分程序指令代码的空间,常数、简单变量、定长成分(如数组元素、结构成分、对象的数据成员等)变量所占空间可变部分尺寸与实例特性有关的成分变量所占空间、引用变量所占空间、递归栈所用空间、通过new和delete命令动态使用空间,注意:,算法的所有性能之间都存在着或多或少的相互影响,因此,当设计一个算法,特别是大型算法时,要综合考虑算法的各项性能、算法的使用频率、算法处理的数据量的大小、算法描述语言的特性及算法运行的机器系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养鹅场自动化喂养系统建设方案
- 绿色能源与节能技术应用方案
- 不锈钢线材生产线项目经济效益和社会效益分析报告
- 滨州公务员在线学法考试试题及答案
- 产城融合示范区安置区项目规划设计方案
- 2026年能源加工公司营销策略制定实施管理制度
- 2026年能源加工公司高危作业安全操作管理制度
- 我国能源行业微生物燃料电池应用案例分析
- 光伏储能充电:城市停泊综合体探索
- 2025湖北孝感市云梦县面向现役军官随军家属专项招聘事业工作人员2人易考易错模拟试题(共500题)试卷后附参考答案
- 个人房屋贷款合同样本
- 2025山东青岛西海岸公用事业集团有限公司招聘笔试历年参考题库附带答案详解
- 中国联通山西地区2025秋招面试典型题目及答案
- 驾校安全生产费用包括哪些
- 2025秋期版国开电大本科《人文英语3》一平台综合测试形考任务在线形考试题及答案
- 内河水运船员安全培训课件
- 银行人才培养激励机制建设方案
- 设备采购技术规范与验收标准手册
- 大树种植与起吊施工安全专项方案
- 反制无人机课件
- 2023-2025年中考语文试题分类汇编:散文阅读(一)解析版
评论
0/150
提交评论