- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1讲
基础数据结构
刘汝佳
目录
• 线性结构
• 二叉堆
• 并查集
• 哈希表
• 应用举例
一、线性结构
基础知识
• 数组
• 带头结点的双链表
– Head结点: 虚拟头结点
– First结点: 第一个有实际内容的结点
• 队列: 循环队列与Open-Close表
例1. 最小值
• 实现一个n个元素的线性表A 。每次可以修
改其中一个元素,也可以询问闭区间[p, q]
中元素的最小值。
• 1=n,m=100000
分析
• 利用二级检索的思想
– 设块长为L, 则一共有n/L个块
– 维护数组B, 保存每个块的最小值
• Modify(x, y)
– A[x] = y O(1)
– 重算x所在块的最小值(更新B) O(L)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1~4 5~8 9~12 13~16
Min操作
• Min(a, b)
– 把区间[a, b]分成若干部分
– 完整块: 一共最多n/L个块 O(n/L)
– 非完整块: 首尾各最多L-1个元素 O(L)
• 每次操作时间复杂度: O(n/L+L)
– 设L=O(n1/2)则渐进时间复杂度为O(n1/2)
√ √ √ √
√ √
例2. 最接近的值
• 给一个n个元素的线性表A ,对于每个数A ,
i
找到它之前的数中,和它最接近的数。即
对于每个i,计算
C =min{|A -A | | 1=j i}
i i j
• 规定C1=0 。
分析
• 问题的关键: 你只需要解决离线问题
– 在线问题: 每输入一个A , 立刻输出C
i i
– 离线问题: 在给出任何输出之前得到所有Ai
• 预处理: 用O(nlogn)时间给所有A 排序
i
– 很快就会学到了☺
• 主算法
– 根据从小到大的顺序构造双向链表
– 依次计算Cn, Cn-1, …, C1 在线问题可能么?
主算法
• A={2, 6, 5, 10, 4, 7}, 依次计算C , C , C
文档评论(0)