集合与词典检索.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
集合与词典检索

集合 与 词典检索 2009/04/14 主要内容: 作业讲评 二进制编码问题 集合及抽象数据结构 字典及二分检索 散列表 SELECT * FROM Message ORDER BY Message.reID, Message.MessageID; 树的存储表示 1. 树的父指针表示法? 用一组连续空间存储树的结点,每个结点有一个父结点,在每个结点中设一个指示器指向其双亲结点的位置。 结构类型如下: struct ParTreeNode /* 树中结点结构 */ { DataType info; /* 结点中的元素 */ int parent; /* 结点的父结点位置 */ }; 2. 树的子表表示法 加权路径和最小 - Huffman树 利用优先队列 构造huffman树 集合的基本概念 在数学中,集合是一些互不相同元素的无序汇集。这些元素称为该集合的成员。集合中的成员可以是一个原子(不可再分解);也可以是一个结构,甚至又是一个集合。集合中的各个元素应该是互不相同的。 从算法课的内容来看: 集合可以看作0到多个同类型元素的组合。 元素之间没有任何确定的依赖关系。 作为抽象数据类型,集合主要考虑集合之间的并、交和差操作,以及集合元素的加入、删除等。 集合的抽象数据类型定义 ADT Set is operations Set createEmptySet ( void ) //创建一个空集合。 int member(Set A,DataType x)//当x∈A时返回真值,否则取假值。 int insert(Set A,DataType x) //x加为A的成员 int delete(Set A,DataType x) //将x从A中删除。 int union(Set A,Set B,Set C) //求集合A和B的并集 int intersection (Set A,Set B,Set C)//求集合A和B的交集 int difference(Set A,Set B,Set C) //求集合A和B的差集 end ADT Set 集合的实现 —— 单链表 集合S={0,1,2,…,n-1}采用带表头结点的有序链表表示时,如图所示: 求单链表表示集合的交集 int intersectionLink (LinkSet s0,LinkSet s1,LinkSet s2) 在有序链表表示的集合中,在s1中找到第一个与s0中相同元素后,其它共同元素不需要从头开始比较,只要从刚才比较成功所结束的位置继续向后检索。 因此,只要用两个指针,沿s0和s1从头至尾扫描一遍即可完成。当这两个表的长度为n1和n2时,算法的时间总花费最多为O(n1+n2)。 字典的基本概念 字典与查找表 —— 由一些具有相同可辨认特性的数据元素构成的集合。 Dictionary的抽象数据类型 ADT Dictionary operations Dictionary createEmptyDictionary ( void ) //创建一个空字典。 int search(Dictionary dic, KeyType key, Position p) //在字典dic中检索关键码为key的记录的位置p。 int insert(Dictionary dic, DicElement ele) //在字典dic中插入记录ele。* int delete(Dictionary dic, KeyType key) //在字典dic中删除关键码为key的记录。 * end ADT Dictionary 字典的顺序检索 字典中的元素可以是无序的,但为了实现的方便,可以把字典中的元素按关键码值排序。 从字典的一端开始顺序扫描,将字典中元素的关键码和给定值比较: 如果相等,则检索成功; 当扫描结束时,还未找到关键码等于给定值的元素,则检索失败。 顺序检索算法适用于非排序顺序存储或非关键码字段检索 字典的二分查找 二分查找(binary search) 要求: 查找表为有序表,即表中 结点按关键字有序排列,并且采用顺序存储结构。 基本思想: 确定搜索区间的中点位置: 然后将待查的key值与range[mid].key比较:若相等,则查找成功并返回此位置,否则确定新的查找区间,继续二分查找. 二分查找算法: 二分查找性能分析 二分法检索每经过一次比较就将检索范围

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档