1_数据结构与算法_北京大学2008_张铭_数据结构和算法简介.pptVIP

1_数据结构与算法_北京大学2008_张铭_数据结构和算法简介.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1_数据结构与算法_北京大学2008_张铭_数据结构和算法简介,数据结构与算法张铭,张铭北京大学,数据结构张铭,张铭数据结构视频,北京大学数据结构,数据结构与算法,数据结构与算法分析,java数据结构和算法,数据结构与算法pdf

示例:最佳 数组a的所有元素是以降序方式输入 外层循环执行n-1次, 每次内层循环只执行1次 整个的时间开销为O(n) min{ complexity(size(y)) | y? Input} 示例:最差 数组 a 的所有元素是以升序方式输入 外层循环执行n-1次, 对每个 i,内层循环需要执行 (n - 1 - i) 次 整个的时间开销为O(n2) max {complexity(size(y)) | y? Input} 示例:平均 随机情况下,数组的元素是无序的,既非升序也非降序 计算平均情况的复杂度应该考虑算法的所有输入情况,确定针对每种输入情况算法所需的操作数目 简单情况下,如果每种输入出现的概率相同的话,可把针对每种输入的操作数目依次相加,再除以输入的总数目来得到平均的开销 每种输入的出现概率并非总是相同,此时,分析平均情况的复杂度也就需要把每种输入出现的概率作为权值加以考虑 且 需要了解算法的实际输入在所有可能的输入集合中的分布状况 最坏、最好、平均情况 对于时间开销,一般不注意算法的“最好估计” 。特别是处理应急事件,计算机系统必须在规定的响应时间内做完紧急事件处理。这时,最坏估计是唯一的选择 对于多数算法而言,最坏情况和平均情况估计两者,它们的时间开销的公式虽然不同,但是往往只是常数因子大小的区别,或者常数项的大小区别。因此不会影响渐进分析的增长率函数估计 时间和空间资源开销 对于空间开销,也可以实行类似的渐进分析方法 很多算法使用的数据结构是静态的存储结构,即存储空间在算法执行过程中并不发生变化 对于静态数据结构,空间开销的估计往往是容易的,它们或者与所涉及的问题规模成正比(空间开销为线性增长),或者不随问题的规模而增大,空间开销为常数 使用动态数据结构算法的存储空间是变化的,在算法运行过程中有时会有数量级地增大或缩小。对于这种情况,空间开销的分析和估计是十分必要的 时空资源的折中原理 同一个问题求解,一般会存在多种算法,这些算法在时空开销上的优劣往往表现出 “时空折中”(trade-off)的性质 “时空折中”,是指为了改善一个算法的时间开销,往往可以通过增大空间开销为代价,而设计出一个新算法来 有时,为了缩小算法的空间开销,也可以牺牲计算机的运行时间,通过增大时间开销来换取存储空间的节省 数据结构的选择和评价 仔细分析所要解决的问题,特别是求解问题所涉及的数据类型和数据间逻辑关系 数据结构的初步设计往往在算法设计之先 注意数据结构的可扩展性。包括考虑当输入数据的规模发生改变时,数据结构是否能够适应 。同时,数据结构应该适应求解问题的演变和扩展 数据结构的设计和选择也要比较算法的时空开销的优劣 小结 数据结构的地位与重要意义 数据结构的主要内容 抽象数据类型的概念 算法及其特点 算法的有效性度量 数据结构的选择 The End Thank You! /mzhang/DS/ /pkujpk/course/sjjg 张铭,王腾蛟,赵海燕 高等教育出版社,2008. 6。“十一五”国家级规划教材 * 数据的逻辑结构可以用一组数据(表示为结点集合K),以及这些数据之间的(关系集合R)来表示:( K ,R ) * 索引方法 为了构造任意的索引函数,可以为索引函数提供附加的存储空间,称为索引表S 索引表中每一元素是指向数据结点的指针。因为索引表 S 由等长元素(指针)组成,所以可以进行线性的索引计算: 始址(元素S[i]) = 始址(元素S[0]) + i ?(指针尺寸) 通过上述公式,由索引号 i 可以计算出索引表中的单元S[i]的始址,再通过读出S[i]元素的内容(是指针),访问真正需要访问的数据结点 索引方法 索引方法也付出了存储开销,其数据结点要附加用于指针的存储空间 索引方法在程序设计中是一种经常使用的方法,其主要原因是对于非顺序的存储结构来说,使用索引表是快速地由整数索引值找到其对应数据结点的唯一方法 散列方法 散列方法是索引方法的一种延伸和扩展 利用一种称为散列函数(hash functions)的机制来 进行索引值的计算,然后通过索引表求出结点的指针地址 散列函数是将字符串 s 映射到非负整数 z 的一类函数 h: S ? Z , 对任意的 s∈ S,散列函数 h(s)=z,z∈ Z 散列方法 散列函数h(s)除了它取非负整数值外,关键的问题包括: 如何恰当地选择散列函数 如何建造散列表 如何在构建散列表时解决“碰撞”问题 抽象数据类型 模块化的思想的发展,为模块的划分提供了理论依据 ,简称ADT (Abstract Data Type) 可以看作是定义了一组操作的一个抽象模型 例如,集合与集合的并、交、差运算就可定义

文档评论(0)

chengduan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档