网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构课件-2-树状数组.pptx

数据结构课件-2-树状数组.pptx

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

数据结构计算机领域本科教育教学改革试点工作计划(“101计划”)研究成果俞勇、张铭、陈越、韩文弢上海交通大学、北京大学、浙江大学、清华大学101

12.2树状数组第12章高级查找戴波电子科技大学

12.2.1树状数组的用途12.2.2树状数组的lowbit运算12.2.3树状数组区间求和12.2.4小结12.2.5作业

12.2.1树状数组的用途12.2.1树状数组的用途数据结构一种用于高效处理动态数组前缀和查询的数据结构。它主要用于求解频繁更新单个元素值、以及在给定索引位置计算前缀和的问题。树状数组的主要用途单点修改:更改指定元素ai的值区间求和:计算第i个元素到第j个元素的和(1)单点修改:O(1)(2)区间求和:O(n)(1)单点修改:O(n)(2)区间求和:O(1)简单循环操作预处理求前缀和:时间复杂度分析

12.2.3树状数组的lowbit运算12.2.2树状数组的lowbit运算数据结构Lowbit(k)将k的二进制表示中最低位的1保留,其余位都变为0.在计算机整数的补码表示中,-k的二进制表示是k的二进制表示各位取反后再加一;因此,-k与k仅在Lowbit(k)所对应的最低位二进制位上同时为1,其余各位上都是相反的。所以,可以用位运算k-k快速计算出Lowbit(k)。

12.2.3树状数组的区间求和12.2.3树状数组的区间求和数据结构n=8的树状数组

12.2.3树状数组的区间求和数据结构12.2.3树状数组的区间求和算法:树状数组区间求和GetS(c,k)输入:树状数组c,整数下标k30输出:前缀和数组S第k项sk的值1sum←02whilek≠0do3|sum←sum+c[k]4|k←k–Lowbit(k)//即k=f(x)5end6returnsum树状数组区间求和算法描述

12.2.3树状数组的区间求和数据结构12.2.3树状数组的区间求和树状数组单点修改a[k]修改,则的c[i]的值都会改变所有符合条件的i可以由得到。算法:树状数组单点修改的伪代码:Update(c,n,k,d)输入:树状数组c,数组总长度n,拟修改的元素位置k,拟修改增加值d输出:更新后的树状数组c1whilek≤ndo//当超出数组总长度时停止2|c[k]←c[k]+d3|k←k+Lowbit(k)//即k=g(k)4end

12.2.3树状数组的区间求和数据结构12.2.3树状数组的区间求和已知数组A=[6,8,1,4,7,3],请建立树状数组并根据树状数组求出[2,5]的和值。树状数组例题

12.2.3树状数组的区间求和数据结构12.2.3树状数组的区间求和S[2,5]=S[5]-S[1]S[5]=C[5]+Sf[5]=C[5]+S[4]=C[5]+C[4]+Sf[4]=C[5]+C[4]=19+7=26S[1]=C[1]+Sf[1]=C[1]=6S[2,5]=26-6=20答案:

12.2.3树状数组小结数据结构12.2.4树状数组小结树状数组的本质是通过一种巧妙的基于二进制的方法划分出n个区间,使得任意前缀区间都可以由这n个区间中不超过个区间组合而成,且每一个元素最多被这n个区间中的个区间包含。树状数组最适合求区间和或区间积。事实上,只要任一区间内的计算可以通过两个前缀计算的逆运算得到就可以,例如减法是加法的逆运算,除法是乘法的逆运算等等。但像求区间最大值、最小值这种运算,就还是用线段树比较方便了。

12.2.3树状数组作业数据结构12.2.5树状数组作业树状数组的本质是通过一种巧妙的基于二进制的方法划分出n个区间,使得任意前缀区间都可以由这n个区间中不超过个区间组合而成,且每一个元素最多被这n个区间中的个区间包含。树状数组最适合求区间和或区间积。事实上,只要任一区间内的计算可以通过两个前缀计算的逆运算得到就可以,例如减法是加法的逆运算,除法是乘法的逆运算等等。但像求区间最大值、最小值这种运算,就还是用线段树比较方便了。

12.1.5作业12.1.5作业数据结构线段树和树状数组都能够解决区间问题,请分析各自特点和适合场合。已知数组A=[5,

文档评论(0)

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

计算机二级持证人

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

领域认证该用户于2024年11月02日上传了计算机二级

1亿VIP精品文档

相关文档