- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 个元素,给每个元素一个编号作为该元素的“下标”
您可能关注的文档
最近下载
- 黑龙江农业工程职业学院单招数学模拟试题(附答案).docx VIP
- 2025读书心得:屏幕时代如何重塑孩子的自控力.docx VIP
- 中国艰难梭菌感染诊断、治疗与预防指南(2024)详细解读PPT课件.pptx VIP
- 第14课《我们都是中国人》第2课时 这是我国的标志 教案设计 2025道德与法治二年级上册.docx
- 湘少版四年级上册、下册的英语单词默写表.pdf VIP
- GBT 危险货物运输应急救援指南 第1部分:一般指南.pdf VIP
- 煤炭掺配合同范本.docx VIP
- 汽车整体认识(汽车发展史)-精.ppt VIP
- 生产安全事故现场处置方案.docx VIP
- 小学数学二年级下册应用题练习.docx VIP
文档评论(0)