欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构预算法第1章绪论.pptx

    • 资源ID:12912251       资源大小:482.57KB        全文页数:63页
    • 资源格式: PPTX        下载积分:50金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要50金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构预算法第1章绪论.pptx

    12v 1.1 数据结构讨论的范畴数据结构讨论的范畴v 1.2 与数据结构相关的概念与数据结构相关的概念v 1.3 算法及其描述和分析算法及其描述和分析3Niklaus Wirth: Algorithm + Data Structures = Programs程序设计程序设计: :算法算法: 数据结构数据结构: 为计算机处理问题编制 一组指令集 处理问题的策略处理问题的策略问题的数学模型问题的数学模型4例如例如: 数值计算数值计算的程序设计问题已知:游泳池的长已知:游泳池的长lengh和宽和宽wide,求求面积面积area。分析:分析:问题涉及的对象:游泳池的长问题涉及的对象:游泳池的长lengh 宽宽wide,面积面积area;对象之间的关系:对象之间的关系:area=lengh wide;5程序:程序:main() int len, wide ,area ;scanf (“%d %d%n”, &len,&wide);area=len*wide ;printf (“area=%d”,area); 可见,对于数值问题,对象之间的关系通可见,对于数值问题,对象之间的关系通常可以用方程或函数表达,我们只要能列出表常可以用方程或函数表达,我们只要能列出表达对象之间关系的方程或函数,找到求解方程达对象之间关系的方程或函数,找到求解方程或函数的方法,就可以编写程序了。或函数的方法,就可以编写程序了。6非数值计算非数值计算的程序设计问题的程序设计问题例一例一: 求一组(n n个)整数整数中的最大值算法: ? ?模型:?基本操作是“比较两个数的大小比较两个数的大小”取决于整数值的范围整数值的范围7例二:例二:计算机对弈算法:?模型:?对弈的规则和策略棋盘及棋盘的格局8例三:例三:足协的数据库管理算法:?模型:?需要管理的项目?如何管理? 用户界面?各种表格9概括地说:概括地说: 数据结构是一门讨论数据结构是一门讨论“描述现实描述现实世界实体的数学模型世界实体的数学模型( (非数值计算非数值计算) )及其上的操作在计算机中如何表示及其上的操作在计算机中如何表示和实现和实现”的学科。的学科。10一、基本概念和术语一、基本概念和术语二、数据结构二、数据结构三、数据类型和抽象数据类型三、数据类型和抽象数据类型11一、基本概念和术语一、基本概念和术语所有能被输入被输入到计算机中,且能被计算机处理的符号处理的符号的集合。数据数据: :是计算机操作的对象计算机操作的对象的总称。是计算机处理的信息的信息的某种特定的符号表示形式表示形式。12是数据(集合)中的一个“个体个体”数据元素数据元素: :是数据结构中讨论的基本基本单位13 数据项:数据项:是数据结构中讨论的最小最小单位数据元素可以是数据项的集合数据元素可以是数据项的集合例如:描述一个运动员的数据元素可以是姓名姓名俱乐部名称俱乐部名称出生日出生日期期参加日期参加日期职务职务 业绩业绩称之为组合项年年 月月 日日编号编号关键码14二、数据结构二、数据结构 数据结构数据结构是带“结构结构”的数据元素的集合。15 假设用三个三个 4 位的十进制数位的十进制数表示一个含 12 位数的十进制数。位数的十进制数。3214,6587,9345 a1(3214),a2(6587),a3(9345)则在数据元素 a1、a2 和 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中六个元素之间存在两个关系: a1 a2 a3 a4 a5 a6行的次序关系行的次序关系:列的次序关系列的次序关系: :row = ,col = , a1 a3 a5 a2 a4 a6 a1 a2 a3a4 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存储结构存储结构 “数据元素”的映象 “关系”的映象 21数据元素的映象方法:数据元素的映象方法:用二进制位(bit)的位串表示数据元素(321)10 = (101000001)2 A = (65)10 = (001000001)222关系关系的映象方法:的映象方法:(表示x, y的方法)数据在计算机中的存储数据在计算机中的存储:只有两种形式只有两种形式顺顺 序序:数据元素逐个连续存放数据元素逐个连续存放(通过物理相通过物理相 邻来确定关系邻来确定关系)非顺序非顺序:数据元素任意存放数据元素任意存放(通过存储地址确通过存储地址确 定关系定关系)23在不同的编程环境中,存储结构可有不同的描述方法。 当用高级程序设计语言进行编程时,通常可用高级编程语言中提供的数据类型描述之。24例如例如: : 以三个带有次序关系的整数表示一个长整数时,可利用 C 语言中提供的整数数组类型。 typedef int Long_int 3;定义长整数为:25 在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明明确说明它们所属的数据类型数据类型。三、数据类型和抽象数据类型三、数据类型和抽象数据类型数据类型数据类型26例如,C 语言中提供的基本数据类型基本数据类型有:整型整型 int浮点型浮点型 float字符型字符型 char逻辑型逻辑型 bool ( C+语言)语言)双精度型双精度型 double实型实型( C+语言语言)27 数据类型数据类型是一个值的集合值的集合和定义在此集合上的一组操作一组操作的总称。 不同类型的变量,其所能取的值值的范围的范围不同,所能进行的操作进行的操作不同。28抽象数据类型抽象数据类型 (Abstract Data Type 简称简称ADT) 是指一个数学模型以及定义是指一个数学模型以及定义在此数学模型上的一组操作。在此数学模型上的一组操作。29抽象数据类型的形式描述抽象数据类型的形式描述 抽象数据类型可用(D, S, P)三元组表示 其中: D 是数据对象; S 是 D 上的关系集; P 是对 D 的基本操作集。 30ADT 抽象数据类型名抽象数据类型名 数据对象:数据对象:数据对象的定义 数据关系:数据关系:数据关系的定义 基本操作:基本操作:基本操作的定义 ADT 抽象数据类型名其中基本操作的定义格式为:基本操作名基本操作名(参数表) 初始条件:初始条件:初始条件描述 操作结果操作结果:操作结果描述 31例如,例如,抽象数据类型复数复数的定义: 数据对象:数据对象: De1,e2e1,e2RealSet 数据关系:数据关系: R1 | e1是复数的实数部分 | e2 是复数的虚数部分 ADT Complex 32基本操作:基本操作: AssignComplex( &Z, v1, v2 )操作结果:构造复数 Z,其实部和虚部 分别被赋以参数 v1 和 v2 的值。 DestroyComplex( &Z)操作结果:复数Z被销毁。 GetReal( Z, &realPart )初始条件:复数已存在。操作结果:用realPart返回复数Z的实部值。33 GetImag( Z, &ImagPart )初始条件:复数已存在。操作结果:用ImagPart返回复数Z的虚部值。 Add( z1,z2, &sum )初始条件:z1, z2是复数。操作结果:用sum返回两个复数z1, z2 的 和值。 ADT Complex34假设:z1和z2是上述定义的复数则 Add(z1, z2, z3) 操作的结果z3 = z1 + z2即为用户需求的复数求和的结果35抽象数据类型的表示和实现抽象数据类型的表示和实现 抽象数据类型需要通过固有数据类固有数据类型型(高级编程语言中已实现的数据类型)来实现。例如,对以上定义的复数。36typedef struct float realpart; float imagpart;complex;/ - -存储结构的定义存储结构的定义37/ - -基本操作的实现void add( complex z1, complex z2, complex &sum ) / 以 sum 返回两个复数 z1, z2 的和 sum.realpart = z1.realpart + z2.realpart; sum.imagpart = z1.imagpart + z2.imagpart; 其它省略 38一一 算法的概念算法的概念 算法是对特定问题求解步骤的一种描述算法是对特定问题求解步骤的一种描述, ,它它是指令的有限序列是指令的有限序列, ,其中每一条指令表示一种其中每一条指令表示一种或多种操作。或多种操作。例例 求求10个正整数中的最大数个正整数中的最大数max的算法。的算法。 描述算法的方法有很多:流程图,自然描述算法的方法有很多:流程图,自然语言,计算机语言,用计算机语言表达语言,计算机语言,用计算机语言表达的算法就是程序。的算法就是程序。开始开始为为10个元素个元素a0到到a9输入数值输入数值max=a0i=1imaxmax=aii=i+1结果结果NYYN求求n个元个元素中的最素中的最大值大值若采用自然语言描述若采用自然语言描述,则如下列步骤所示则如下列步骤所示:(1)给给10个元素个元素a0-a9输入数值输入数值;(2)把第一个元素把第一个元素a0赋给用于保存最大值元素的变量赋给用于保存最大值元素的变量max;(3)把表示下标的变量把表示下标的变量i赋初值赋初值1;(4)如果如果imax,则将则将ai赋给赋给max,否则不改变否则不改变max的值的值,这这使得使得max始终保存着当前比较过的所有元素的最大值始终保存着当前比较过的所有元素的最大值;(6)使下标使下标i增增1,以指示下一个元素以指示下一个元素;(7)转向第转向第(4)步继续执行步继续执行.main() int i,max,a10;printf(“请输入请输入10个整数个整数:”);for(i=0;i=10;i+) scanf(“%d”,&ai);max=a0;i=1;while(imax) max=ai;i+;printf(“10个整数中的最大值为个整数中的最大值为:”,max);C语言描述如下语言描述如下: 二二 算法的基本特征算法的基本特征1 1)输入:)输入:0 0个或多个输入;个或多个输入;2 2)输出:)输出:1 1个或多个输出;个或多个输出;3 3)有穷性:算法必须在有限步内结束;)有穷性:算法必须在有限步内结束;4 4)确定性:组成算法的操作必须清晰无二义性。)确定性:组成算法的操作必须清晰无二义性。5 5)有效性:组成算法的操作必须能够在计算机)有效性:组成算法的操作必须能够在计算机 上实现。上实现。w算法的描述算法的描述采用类采用类 C语言语言w算法的评价算法的评价衡量算法优劣的标准衡量算法优劣的标准w正确性(correctness):w可读性(readability):人的阅读与交流w健壮性(robustness):当输入非法数据时,算法能够适当的做出反应或进行处理,不会产生莫名其妙的结果w效率与低存储量:算法的执行时间和所需的最大存储空间45三三 算法效率的衡量方法和准则算法效率的衡量方法和准则通常有两种两种衡量算法效率的方法:事后统计法事后统计法事前分析估算法事前分析估算法缺点:缺点:1. 必须执行程序 2. 其它因素掩盖算法本质一般:算法中基本操作重复执行的次数是问题规模一般:算法中基本操作重复执行的次数是问题规模n的某个函数的某个函数f(n)时间复杂度:随问题规模时间复杂度:随问题规模n的增大,算法执行时间的的增大,算法执行时间的增长率和增长率和f(n)的增长率相同,称作算法的渐进时间复的增长率相同,称作算法的渐进时间复杂度。简称时间复杂度。杂度。简称时间复杂度。即基本操作(原操作)即基本操作(原操作)重复执行的次数的阶数重复执行的次数的阶数 T(n)=o(f(n)例:例:n*n矩阵相乘矩阵相乘D=d+1;for(i=1;i=n;i+) for(j=1;j=n;j+) cij=0; for(k=1;k=n;k+) cij=cij+aik*bkj; 33)(nOnTnnf例2:for(i=0;in;i+) for(j=0;jm;j+) Aij=0; 例:例:for(i=0;in;i+) for(j=0;jm;j+) Aij=0; mnOnTmnnf*)(49算法的存储空间需求算法的存储空间需求算法的空间复杂度定义为空间复杂度定义为: : 表示随着问题规模 n 的增大,算法运行所需存储量的增长率与 g(n) 的增长率相同。S(n) = O(g(n)50算法的存储量算法的存储量包括:1. 输入数据输入数据所占空间2. 程序本身程序本身所占空间3. 辅助变量辅助变量所占空间51 若输入数据输入数据所占空间只取决于问题 本身,和算法无关和算法无关,则只需要分析除 输入和程序之外的辅助变量辅助变量所占额外额外 空间空间。 若所需额外空间相对于输入数据量 来说是常数,则称此算法为原地工作原地工作。 若所需存储量依赖于特定的输入,则通常按最坏情况考虑。52531. 熟悉各名词、术语的含义,掌握基熟悉各名词、术语的含义,掌握基本概念。本概念。2. 理解算法五个特征的确切含义。理解算法五个特征的确切含义。3. 掌握通过计算掌握通过计算“原操作原操作”语句的次语句的次数来估算算法时间复杂度的方法。数来估算算法时间复杂度的方法。54作业题作业题:求下面程序段的时间复杂度求下面程序段的时间复杂度(1) temp=x; /语句语句1 x=y; /语句语句2 y=temp; /语句语句3(2) sum=0; /语句语句1 for(i=0;in;i+) /语句语句2 for(j=0;jn;j+) /语句语句3 sum=sum+i*j; /语句语句4(3) i=0; /语句语句1 while(in)&(ai!=K) /语句语句2 i+; /语句语句3 return(i); /语句语句4作业题作业题:求下面程序段的时间复杂度求下面程序段的时间复杂度(1) temp=x; /语句语句1 x=y; /语句语句2 y=temp; /语句语句3(2) sum=0; /语句语句1 for(i=0;in;i+) /语句语句2 for(j=0;jn;j+) /语句语句3 sum=sum+i*j; /语句语句4(3) i=0; /语句语句1 while(i1),设计在时间和空间方面尽可量有效率的算法,将A中的序列循环左移p(0pn)个位置,即将A中的数据从(A0, A1, ., An-1)转变成(Ap,Ap+1,. ,An-1,A0,A1,.,Ap-1),并分析所设计算法的时间复杂度和空间复杂度。58 从简到繁,我们按四种思路构思算法,并逐一分析时间和空间方面的效率。具体的算法参见习题的解答实例。 在下面的实例演示中,假设n=12,p=3 59(参考答案之(参考答案之1)A0A11A1A2A3A4A5A6A7A8A9A10A1A2A3A4A5A6A7A8A9A10A11A0A2A3A4A5A6A7A8A9A10A11A0A1A3A4A5A6A7A8A9A10A11A0A1A2 首先设计一个左移1位的函数,然后3次调用该函数,实现数组元素左移3位。60(参考答案之(参考答案之2)A0A11A1A2A3A4A5A6A7A8A9A10A11A3A4A5A6A7A8A9A10A0A1A2A11A3A4A5A6A7A8A9A10A0A1A2 先将A0, A1, A2缓存到辅助空间,其余元素一次性左移3位,再把缓存的那3个元素复制到数组A的尾部。61(参考答案之(参考答案之3)A0A11A1A2A3A4A5A6A7A8A9A10A3A11A1A2A6A4A5A9A7A8A0A10第一趟A3A11A4A2A6A7A5A9A10A8A0A1第二趟A3A2A4A5A6A7A8A9A10A11A0A1第三趟 每一趟,按步距p=3, (循环)左移调换元素,一次定位,共进行3趟。62(参考答案之(参考答案之4)A0A11A1A2A3A4A5A6A7A8A9A10A11A0A10A9A8A7A6A5A4A3A2A1A3A0A4A5A6A7A8A9A10A11A2A1A3A2A4A5A6A7A8A9A10A11A0A1第一次逆置第二次逆置第三次逆置 通过三次逆置数组的元素来实现左移,首先,整体逆置;然后分别对左部的9个元素和右部的3个元素进行逆置。63四个算法的时空分析比较v参考答案之参考答案之1: 时间复杂度O(p*n) 空间复杂度O(1) v参考答案之参考答案之2: 时间复杂度O(n) 空间复杂度O(p) v参考答案之参考答案之3: 时间复杂度O(n) 空间复杂度O(1) v参考答案之参考答案之4: 时间复杂度O(n) 空间复杂度O(1)

    注意事项

    本文(数据结构预算法第1章绪论.pptx)为本站会员(修****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开