新数据结构 教学课件 戴敏 chapter8.pptVIP

  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文档。上传文档
查看更多
数 据 结 构 第8章 查 找 本章目标 8.1 查找的基本概念 8.2 线性表的查找 8.3 树表的查找 8.4 散列表的查找 8.1 查找的基本概念 集合的定义和表示 前面几章中我们已经学习了3种数据结构——线性结构、树、图 从本章起,我们学习最后一种数据结构——集合结构 集合的定义和表示 集合(collection)是由同一类型的数据元素(或纪录)组成的群集 由于集合中的数据元素之间存在着松散的关系(松耦合关系),因此集合是一种灵活的数据结构 集合的表示 集合的表示 一个数据元素可由若干个数据项(data items)组成。数据项是数据的不可分割的最小单位。例如,每个学生纪录由若干列(columns)组成,列就是学生纪录的数据项,每一列描述了学生某一方面的特征或属性 集合的存储结构 集合这种数据结构在计算机中如何表示?它采用什么样的存储结构? 由于计算机中数据的存储结构只有两种:顺序存储结构和链式存储结构。因此集合的存储结构也不外乎这两种 我们已经学习了顺序表,线性链表(如单链表),树的二叉链表等存储结构。应该说这些存储结构都可以作为集合来存放数据元素。所以,我们没有必要再寻求一种新的存储结构存放集合中的元素 换句话说,顺序表、线性链表、二叉链表等存储结构从广义上讲都是集合,其中每个元素或结点代表一条纪录 关键字与查找 查找是按关键字进行的 所谓关键字(key)是数据元素(或记录)中的某个数据项或某些数据项的组合,用它可以唯一标识一个数据元素(或纪录) 任意两个数据元素的关键字都不能相同 例如一条学生记录包含学号、姓名、性别、籍贯、电话、通讯地址等数据项。有些数据项不能唯一标识一个数据元素,而有的则可以。例如,姓名就不能唯一标识一条纪录(因有同名的人),而学号则可以唯一标识一条纪录(每个学生学号是唯一的,不能相同) 查找的定义 查找(find),也称为检索(retrieve)或搜索(search),就是根据给定值k,在一个集合(或表)中查找出其关键字等于k的数据元素(或纪录),若集合中有这样的元素,则查找成功,并返回整个数据元素(或纪录)或指出该元素在表中的位置;若表中不存在这样的记录,则称查找失败,并作相应处理 动态集合(dynamic collection) 在对集合中的元素进行查找时,若集合中不存在给定值k,那么我们就要将它插入集合中;也可以执行删除元素的操作,这样的集合叫动态集合 静态集合(static collection) 对集合只能做查找,不能做插入或删除元素的操作,只返回查找成功还是失败的结果,这样的集合叫静态集合 平均查找长度(ASL) 查找运算的基本操作是关键字的比较,所以,通常把查找过程中对关键字执行的平均比较次数(也称为平均查找长度 —— average search length)作为衡量一个查找算法效率优劣的标准 对于一个含有n个元素的集合(或表),查找成功时的平均查找长度可表示为 8.2 线性表的查找 8.2.1 无序表的查找——顺序查找 静态集合中的元素在初次建表时建立,不再改变 顺序查找是最基本的查找方法之一。所谓顺序查找,又称线性查找,主要用于在线性结构中进行查找 顺序查找的基本思想是:从表的一端开始,顺序扫描线性表,依次将扫描到的元素的关键字和待找的值k作比较,若相等,则查找成功;若整个表扫描完毕,仍未找到其关键字等于k的元素,则查找失败 以顺序表或线性链表表示的静态集合可以采用顺序查找 顺序查找的表中的元素可以是无序的 顺序查找的算法实现 若返回值为0表示查找不成功,否则查找成功。函数中查找的范围从record[n]到record[1](即从后向前),record[0]作为监视哨,保存要找的值,查找时若遇到它,表示查找不成功 顺序查找的性能分析 假设在每个位置查找的概率相等,即pi= ,由于查找是从后往前扫描,则有每个位置的查找比较次数cn=1, … ,c2= n-1,c1=n ,于是,查找成功的平均搜索长度为 顺序查找的优缺点 优点:算法简单,对表结构无任何要求,无论是用数组还是用线性链表来存放数据元素,也无论元素之间是否按关键字有序或无序,它都同样适用。而且对于线性链表,只能顺序查找 缺点:查找效率低,当n较大时,不宜采用顺序查找,而必须寻求更好的查找方法 8.2.2 有序表的查找——折半查找 折半查找(或二分法搜索,binary search)是一种高效的查找方法 折半查找有两个条件限制 要求表必须采用顺序存储结构,即顺序表 表中元素必须按关键字有序(升序或降序)排列 折半查找举例 给定有序表中关键字为8, 17, 25, 44, 68, 77, 98, 100, 115, 125,查找k=17的情况 折半查找举例

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档