一维树状数组

本文介绍了树状数组(Binary Index Tree),一种时间复杂度为O(logn)的序列查询和求和数据结构。树状数组通过二进制位维护序列前缀和,能快速更新和查询,特别适合于动态更新数组元素的场景。文章详细解释了树状数组的原理,包括如何初始化、更新以及如何利用二进制规律进行计算。
摘要由CSDN通过智能技术生成

一维树状数组

        一维数组相信大家平时都是经常使用,对于一维数组而言,查询以及求和的时间复杂度分别为O(1) 和 O(n) 。

       今天我们介绍一个新的数据结构——树状数组英文名称为Binary Index Tree,直译过来就是二进制索引树,我觉得二进制索引树更能说明其本质。树状数组的本质就是一种通过二进制位来维护一个序列前i和的数据结构。它的查询和求和的时间复杂度均为O(logn)。而且特别是当数组元素的值可以随时发生变化时,它的求和不需要像线性数组一样重新从头扫到尾更新求和而是只用更新改变的部分元素即可。其实树状数组通俗地说就是把一位线性数组模拟成树状,从而达到跳跃性的查询和求和。树状数组

序列C[]就是树状数组, 那么C[]如何求得?

C[1]=A[1];

C[2]=A[1]+A[2];

C[3]=A[3];

C[4]=A[1]+A[2]+A[3]+A[4];

C[5]=A[5];C[6]=A[5]+A[6];

C[7]=A[7];

C[8]= A[1]+A[2]+A[3]+A[4]+A[5]+A[6]+A[7]+A[8];

以上只是枚举了所有的情况,那么推广到一般情况,得到一个C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值