高级数据构.pptx

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

数据结构 Introduction to Data Structure;/#/contest/show/155;;重要的事实:当代计算机1s内可做10^7左右次计算 配置好的机器可到k*10^7~10^8 在这个限制下时间复杂度一定的算法存在能处理的规模上限 复杂度 数量级 最大规模 O(logN) 10^20 很大 O(N^1/2) 10^12 10^14 O(N) 10^6 10^7 O(NlogN) 10^5 10^6 O(N^2) 1000 2500 O(N^3) 100 500 O(N^4) 50 50 O(2^N) 20 20 O(3^N) 14 15 O(N!) 9 10 ;什么是数据结构? 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 理解:数据结构是一种特别的储存和组织数据的方式,以便于我们更高效地维护和使用数据。 数据结构的含义:数据、关系、操作 例子:一维数组 数据:a[1], a[2], …, a[n] 关系:前驱/后继 操作:随机存取,插入,删除… 程序 = 数据结构 + 算法(数据结构为算法服务??? 根据算法对数据的操作要求,设计合适的数据结构 实现同一套操作,可以用多种数据结构 如何降低时空复杂度,又方便实现? ;维护一个电话薄,方便进行插入删除和查找 操作:插入,删除,查找 逻辑结构:无序线性表 储存结构:数组 插入:插到尾部比较方便,O(1) 删除:“合并两半”导致元素移动,最坏O(n) 查找:最坏O(n) 储存结构:链表 插入:插到头部比较方便,O(1) 删除:(找到后)O(1) 查找:最坏O(n) ;维护一个电话薄,方便进行插入删除和查找 操作:插入,删除,查找 逻辑结构:有序线性表 储存结构:数组 插入:最坏O(n) 删除:最坏O(n) 查找:二分查找,最坏O(logn) 储存结构:链表 插入:(找到后)最坏O(1) 删除:(找到后)最坏O(1) 查找:最坏O(n) ; ; ; ; ; ; ; ;STL简介;STL之容器;STL-vector;STL-stack;STL-queue;STL-priority_queue;STL之迭代器; ;优先队列(单调队列);堆排序 堆的定义:n个元素的序列(k1,k2,……kn),当且仅当满足下列关系时,称之为堆;堆排序:将无序序列建成一个堆,得到关键字最小(或最大)的记录;输出堆顶的最小(大)值后,使剩余的n-1个元素重又建成一个堆,则可得到n个元素的次小值;重复执行,得到一个有序序列,这个过程叫~ 堆排序需解决的两个问题: 如何由一个无序序列建成一个堆? 如何在输出堆顶元素之后,调整剩余元素,使之成为一个新的堆? 第二个问题解决方法——筛选 方法:输出堆顶元素之后,以堆中最后一个元素替代之;然后将根结点值与左、右子树的根结点值进行比较,并与其中小者进行交换;重复上述操作,直至叶子结点,将得到新的堆,称这个从堆顶至叶子的调整过程为“筛选”;例;49;76;算法描述;例 含8个元素的无序序列(49,38,65,97,76,13,27,50);算法描述;优先队列;public?static?Integer[]?getMaxInSlideWindow(Integer[]?A,?Integer?w)?{?? ???if?(A?==?null?||?w?=?0?||?A.length?-?w??0)?return?null;???//?invalid?input?? ???Integer[]?B?=?new?Integer[A.length?-?w?+?1];???? ????//?auxiliary?queue?that?is?sorted?in?descending?order?? ????LinkedListInteger?q?=?new?LinkedListInteger();???? ????for?(int?i?=?0;?i??A.length;?i++)?{?? ????????int?data?=?A[i];???//?enqueue.?Remove?those?smaller?values?? ????????while?(!q.isEmpty()??q.getLast()??data)?{?? ????????????q.removeLast();?? ????????}?? ????????q.add(data);???? ????????if?(i??w?-?1)?continue;????? ??????? B[i?-?w?+?1]?=?q.get(0);???//?dequeue.? ????????if?(A[i?-?w?+?1]?==?B[i?-?w?+?1])?{

文档评论(0)

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

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

1亿VIP精品文档

相关文档