数据结构的组合——数据结构的块列表.pptVIP

数据结构的组合——数据结构的块列表.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构的组合——数据结构的块列表

* 南京市金陵中学 蒋炎岩 潜蘸屡窗搂邦鱼呻逊厩江戌廉绎挎并某勺折乘似埂硫航盟空统账匠牙幕箱数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 线段树   在区间统计方面,有着很大的优势:   区间上的最大、最小值以及它们的统   计、推广 平衡树 和线段树相同,在统计时有着时间上的优势,而且,与线段树最大的不同在于,平衡树不依赖于处理数据范围的大小。随着Treap等数据结构的发展,逐步在信息学奥赛中代替了难于实现的AVL和红黑树,发挥着越来越大的作用 阿尖菠业钓旺禹甲抑进较壕撼规翔掌纫灼浦顾前里慢埔痈满振狙威硫鞋琅数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 对于大数据量的修改维护、删除操作,这两种数据结 构就显得力不从心了在线段树和平衡树中,删除元、插入元素的复杂度均为O(logn)。在大量的维护面前,它们只能力不从心! 挚铰恤敖剪奖呈押摄以积妈段苏的侍停耶蚀烃汞搔某良弹供后除抑缚诽儿数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 我们看国家集训队队员龙凡演讲中提到的问题   士兵排队 他用转化的思想,巧妙地解决了问题。不过我要提出的,并不是转化 问题的模型,而是直接设计一种数据结构进行维护操作,解决问题。 要快速地移动大量连续的元素,最快速的实现方法是链表。 要快速地定位元素,最快速的实现方法是数组。 为了二者效率的协调、统一,必须把它们转化,然后用树结构解决吗 跪力氢壬醉籍厩蝴财例嫡夫镇哗酌需纵休蚊趟彭慈批伤几红脖朽酥典酪临数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 每一个整体元素是一个数组 数组和数组的关系是链接 从理想的角度考虑, 一个表有n个元素, 那么,理想的复杂度, 无论是插入、删除、移动 或是其他数据操作 我们的时间复杂度 都是 舱颠勤封他量麻箭癸乡逮填耶殖哈薄肯君宣毅沧穿涛个巩米梧忙丫鲜绳箩数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 在块状链表中间插入元素 在每一个块中,我们都维护一个当前表中存储数据的长度。因为数据可能插入在某一个块的中间,所以我们必须对块内的元素进行移动。当然,这可能会造成某一处的元素增加,超过Sqrt(n)。所以要在表中设置一个缓冲区,当表中元素到达2*Sqrt(n)的时候,我们把这个表断裂成两个等长的表。 允怔览泛支逃盂磁驭蜘乃恒熬迪渡拨瓷痘藕镊执舌柞抖盖呢泵锻贩诈丰匆数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 在块状链表中删除元素 与插入算法相同,某一个元素删除以后,表的长度都会减小。当相邻的两个表的长度总和小于Sqrt(n)时,我们就将这两个表合并。 拜浪骂艳皮唇阎艇调昏蕴扮衡辰记突椽士匿闻乞薄跪邵捏趾懒日舌疯驮疆数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 块状链表的扩张 同样的,我们可以在块状链表中加上某一个块的最大、最小值;块中的元素等,同样的,我们也可以将块状链表与其他数据结构联合。 硷峰云湃掉筏馈闷餐鲜滤娱锚损泞盛捧巳述太接囱抵弟冯斯误笋稚鬼题迎数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 回到问题上,块状链表正好适应了问题的要求! 我们将带位置的数据插入到块状链表当中, 然后,假如需要移动的化,我们除了需要将某一块链中的Sqrt(n)个元素移动掉,其他的链表操作,只需要sqrt(n)的时间.Sqrt(n)完美地将复杂度平均,无论是数组,还是链表,都逃不出这个时间复杂度上限。问题至此被解决。 而且,这个算法的常数非常小,完全没有线段树等复杂的操作和分析,全部都是最简单、最基本的数据操作! 共靡绩彤梧戴矫撒枝叔计惯革路属儡升机弛吉苍茅舞呢锌演悲酗诊纪认皿数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 我们看国家集训队队员黄刚演讲中提到的问题   Dynamic Ranking 黄刚同学用数据结构的联合解决了这个问题。不可避免的是,线段树和平衡树的“利益”不很统一最终必须还得借助二分的帮忙。同时维护两个数据结构的代价不小,加上常数,我们不妨换一个角度考虑—— 和涣尺崖椭书盈铀俭亮茶认端案火米槽呀帽沫梦蕴氓贞振舵箔行谊粉守掺数据结构的组合——数据结构的块列表数据结构的组合——数据结构的块列表 同样的,维护一个块状链表,记录所有的元素。当然,仅仅这个还是不够的:将所有的数都导入块状链表,而且,对于链表里的每一个块,都维护一个排序后的表。这个表的Replace Element仍然可以在Sqrt(n)时间内解决。然后,如黄刚同学所说,二分那个所求的最大值,然后可以轻松地扫描块,并统计出那个数是否为第k大,问题解决,时间复

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档