_数据结构的扩张_算法分析与设计_杭电_褚一平.ppt

_数据结构的扩张_算法分析与设计_杭电_褚一平.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
顺序统计树应用 - 求逆序对 ? 逆序对: 例如:无序数组 : 9 2 12 6 20 10 6: 1 2: 3 10: 2 for (i = 0 ;i N ;i ++) for(j = i + 1; j N ;j++) if (a[i] a[j]) count ++; 传统方法 : 时间复杂度为 O(N 2 ) 9 比 6 大 , 所以 1 个 9,6, 12 都比 2 大 , 3 个 12, 别 20 比 10 大 , 2 个 SUM: 1 + 3 + 2=6 ? SUM=SUM+ i +1-RANK(T,x) ? 数组中某个数字 s[i] 的逆序数是指出现在 s[i] 之前, 但是比 s[i] 大的数字的个数。 ? 根据顺序统计量的 Rank(T,x) ,每插入到一个元素 x 后,可以求得在已经出现的元素中,比 x 小的数 字的个数。 ? //Rank(T, z) 表示 s[0..i] 中 =s[i] 和数的个数 , i+1 表示 s[0..i] 总的数的个数 , 相减便得到出现在 s[i] 前 但比 s[i] 大的数的个数 顺序统计树应用 - 求逆序对 1 数据结构扩张方法: SUM=0; SUM=SUM+ i +1-RANK(T,x) //i 表示第几次插入 , 即在数组中的位置 -1; RANK(T,x) 表示插入那个 x 结点的秩 , 包括自 身 6 1 数组: 9 6 12 2 20 10 2 SUM=0+1+1-1=1; 1 3 2 1 2 4 SUM=1+3+1-1=4; 20 1 2 5 10 1 12 3 9 6 SUM=4+5+1-4=6; 时间复杂度为 : O(nlgn) 顺序统计树 ? 顺序统计树提出的原因 ? 顺序统计树的介绍 ? 如何利用顺序统计树解决问题 ? 举例 Josephus 排列 求逆序对 MIN-GAP 顺序统计树应用 :MIN-GAP ? 例如, Q={1 , 5 , 9 , 15 , 18 , 22} ? 传统方法: 4 4 4 6 3 Q 的 MIN-GAP 为: 3; 时间复杂度为: O(N) ; 顺序统计树应用 :MIN-GAP ? 数据结构扩张的方法: – 附加信息: min-val[x] 、 max-val[x] 、 min-gap[x]; min-val[x]= min-val[left[x]] key[x] max-val[x]= max-val[right[x]] key[x] min-gap[x]= min-gap[left[x]] min-gap[right[x]] key-max-val[left[x]] min-vla[right[x]]-key[x] ? min-gap[x] :记录以 x 为根结点的树的 min- gap 。当 x 为叶子结点时, min- gap[x]=0x7fffffff ? min-val[x] :记录以 x 为根结点的树中最小的 关键字 ? max-val[x] :记录以 x 为根结点的树中最大 的关键字 顺序统计树应用 :MIN-GAP ? 数据结构扩张的方法 : Q={1 , 5 , 9 , 15 , 18 , 22} ∞ 1 min-vla min-gap max-val 5 ∞ 5 5 1 1 4 5 1 -1 5 ∞ 5 1 ∞ 9 5 9 ∞ 9 4 5 -1 15 ∞ 15 15 9 1 ∞ 1 1 5 9 6 15 9 5 1 4 15 5 -1 顺序统计树应用 :MIN-GAP 1 4 15 5 -1 1 ∞ 1 1 5 9 6 15 9 5 15 ∞ 15 15 9 18 ∞ 18 18 15 4 15 1 ∞ 1 1 5 6 15 5 15 ∞ 15 9 ∞ 18 18 9 3 18 15 5 22 ∞ 22 22 15 1 3 22 5 -1 22 9 ∞ 9 9 15 18 4 22 18 15 return T-min-gap ; 时间复杂度 : O(lgn) 大纲 ? 数据结构的扩张 ? 应用 ? 总结 顺序统计树 区间树 区间树 ? 区间树的定义 ? 区间三分法 ? 区间树的查找操作 ? 举例 区间树 ? 将 RB-Tree 扩张为由区间构成的数据结构。 [16,21] 30 [16,21] [8,9] [5,8] [19,20] [17,19] [26,26] [25,30] [6,10] 优点 : 查找特定区间 内发生什么事情 [8,9] 10 [25,30] 30 [5,8] 10 [6,10] 10 [17,19] 20 [26,26] 26 [19,20] 20 max 域 max[x]=max(high[int [x]],

文档评论(0)

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

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

1亿VIP精品文档

相关文档