DBS第七章s.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有序集:元素的汇集,其中每个元素可以出现一次或多次,并且出现次序是重要的。通常用( )表示有序集。 例如:(1,2,3)与(3,2,1)不同。 (2)集合的运算 数学意义上,集合运算主要有: ①求集合的并 ②求集合的差 ③求集合的交 ④判断两集合是否相等 4. 搜索算法分类 * 引 言 集合是一个基本的数学概念。逻辑上,集合中元素间不存在固有的关系。 组织集合的方法很多。例如:集合可以用线性表、搜索树、跳表和散列表表示。 本章将讨论集合的线性表表示,以及2种常用的搜索算法。第7章讨论表示集合的多种搜索树。第8章将介绍散列表表示的集合。 第7章 集合与搜索 内容提要 1.集合的基本概念 2.定义动态集ADT 3.集合的表示形式 4.顺序搜索 5.二分搜索 7.1 基本概念 课堂提要 第7章 集合与搜索 7.1 基本概念 7.2 顺序搜索 7.3 二分搜索 (a)集合结构 (b)线性结构 (c)树形结构 (d)图结构 图1-2 四种基本的结构关系 1.集合 (1)基本概念 集合:在数学上,集合是不同对象的无序汇集。 例如:集合{1,2,3}与{3,2,1}相同。 元素:集合的对象。 多重集:元素的无序汇集,其中每个元素可出现一 次或多次。 通常,用{ }表示无序集。 例如:多重集{1,1,2,3}与{3,2,1,1}相同,但与{1,2,3}不同。 7.1.1 集合与搜索 2.动态集 (1)动态集:在数据结构意义上,集合通常是动态的,在集合中可以插入和删除元素,因而称为动态集。 (2)集合元素定义 typedef struct entry{ KeyType Key; DataType Data ; } Entry; 其中,KeyType称为关键字类型,应该为可比较大小的类型。 key 为关键字。 除关键字外的其他数据项归入Data中。 关键字:数据元素中用来标识一个数据元素的 某个数据项。 主关键字:可以惟一标识一个元素的关键字。 次关键字:用以识别若干元素的关键字。 本章中,若无特殊说明,都假定被搜索的关键字是主关键字。 3. 搜索运算 当信息量较少,整个集合元素都存放在内存中,称为表。否则,称为文件。搜索运算是表和文件上的最典型运算。 搜索:根据给定的某个值,在表中确定一个关键字值等于给定值的数据元素;若表中存在这样的元素,则称搜索成功,搜索结果可以返回整个数据元素,也可指示该元素在表中的地址;若表中不存在关键字等于给定值的元素,则称搜索不成功(失败)。 ◆按元素是否在内存,分为: 内搜索:对表的搜索 外搜索:对文件的搜索 ◆按关键字的比较情况,分为: ●基于关键字比较的搜索; 此类搜索将在《搜索树》介绍 ●基于计算地址的搜索。 此类搜索将在《散列表》介绍 ADT 7-1 Set { 数据: 同类元素的有限汇集。元素由关键字标识。通常,集合由不同元素组成,其最大允许长度为MaxSet。 运算: void CreateList(Set * s,int maxsize); 后置条件: 已创建一个空集合。 BOOL IsEmpty(Set s) 后置条件: 若集合为空,则返回TRUE,否则返回FALSE。 BOOL IsFull(Set s) 后置条件: 若集合满,则返回TRUE,否则返回FALSE。 BOOL Search(Set s,KeyType k, T *x) 后置条件: 在集合中搜索关键字值为k的元素。如果存在该元素,则将其放入*x,并且函数返回TRUE,否则返回FALSE。 BOOL Insert(Set *s,T x) 后置条件: 在集合中搜索关键字值为k的元素。如果不存在该元素,则在集合中插入x,并且函数返回TRUE,否则返回FALSE。 BOOL Remove(Set *s,KeyType k, T *x) 后置条件: 在集合中搜索关键字值为k的元素。如果存在该元素,则将该元素赋给*x,并从集合中删除之,函数返回TRUE,否则返回FALSE。 }   7.1.3 集合的表示 组织集合的方法很多,组织的方法不同,实现搜索等运算的方法也不同,它直接影响运算的效率。 集合可以用线性表、搜索树、跳表和散列表表示。 本章讨论集合的线性表表示,重点讨论顺序表表示方式下的搜索算法。 下一章将介绍集合的搜索树表示;第八章将讨论集合的散列

文档评论(0)

000 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档