7,字典和集合-2.PDFVIP

  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文档。上传文档
查看更多
7,字典和集合-2

7,字典和集合-2 数据检索和字典,数据规模和检索,索引和字典 基于表和排序表实现字典和检索,二分检索 散列的概念,散列表和字典,散列函数和冲突消解,实现 集合数据结构,集合的实现,位向量实现 Python 的字典和集合 二叉排序树的概念和实现 最佳二叉排序树,等概率和不等概率情况,构造算法 支持动态操作的排序树:AVL 树 支持字典实现的其他树形结构简介 数据结构和算法(Python 语言版):字典和集合(2 ) 裘宗燕,2014-12-16-/1/ 字典和集合 任何字典实现方法都可以用于实现集合 只需把集合的元素直接存储在保存字典项(关联)的位置 集合的最基本操作是元素与集合的关系,对应于字典查询;集合数据 结构需要的创建/空集检查/加入/删除等都有字典操作与之对应 集合实现需要考虑的新问题是常用集合运算的实现 求并集和交集,求相对于某个集合的补集(集合差)都是从两个已有 集合得到另一个集合。集合的实现需要考虑这些操作的效率 例,考虑用顺序表作为集合的实现结构,实现中保持元素的唯一性 建立集合,就是建立一个无重复元素的顺序表 判断元素关系,就是在表中检索元素的存在性,O(n) 时间 求两集合的交集,需要逐个考虑一个集合的元素,如果它也属于另 一集合就将其加入结果集合。设两个集合的元素分别为m 和n 个, 求交集的复杂性就是O(m*n)。求并集、差集的情况与此类似 数据结构和算法(Python 语言版):字典和集合(2 ) 裘宗燕,2014-12-16-/2/ 基于排序表的集合实现 采用排序表能显著提高集合运算的效率,如求交集可采用下面算法: 设求交集的集合S 和T 由表s 和t 表示,结果集合r = [] 设置变量i = 0; j = 0,成倍作为下次检查的s 和t 元素的下标 while i len(s) and j len(t): if s[i] t[j] : i += 1 elif t[j] s[i] : j += 1 else: # s[i] = t[j] r.append(s[i]); i += 1; j += 1 r 就是得到的交集 显然,主循环每次迭代至少处理掉两个集合里的一个元素,时间复杂性 是O(m+n),比O(m*n) 是质的提高 并集/差集操作均可类似定义,复杂性也是O(m+n) 。但在另一方面,插 入元素操作的复杂性变成了O(n) (需要按序插入),这是代价 数据结构和算法(Python 语言版):字典和集合(2 ) 裘宗燕,2014-12-16-/3/ 基于散列表实现集合 也可以考虑用散列表实现集合 一个集合就是一个散列表 加入/删除元素对应于加入/删除关键码 集合元素判断对应于关键码检索 集合运算都是基于已有散列表建立新散列表,不难实现 集合操作的效率: 完全由散列表的性质确定,具有概率性。在最佳情况下都很高效 加入/删除和元素判断,操作的代价接近常量 求交集/并集/差集,大致为O(m+n) 复杂性,其中m 和n 为参加运 算的两个集合的大小 如果已经有了散列表结构,基于它实现一种集合数据类型不是很困难的 工作。可作为简单的编程练习,这里不进一步讨论 数据结构和算法(Python 语言版):字典和集合(2 ) 裘宗燕,2014-12-16-/4/ 集合的特殊实现技术:位向量实现 请注意,一个元素是否属于一个集合,是一种二值判断。基于这一认识, 人们提出了一种专门的集合实现技术:位向量表示 如果所需要的集合对象有一个公共超集U,也就是说,需要实现的集合 都是U 的子集,就可以采用位向量技术实现这些集合,方法是: 假定 U 包含n 个元素,给每个元素一个编号作为该元素的“下标”

文档评论(0)

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

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

1亿VIP精品文档

相关文档