树状数组的时间复杂度证明

版权声明:本文为Bzy辛苦的原创文章,未经Bzy允许不得商业化公开。 https://blog.csdn.net/qq_35703773/article/details/80411121

build

根据建立的方法可以容易的写出递推式:

T ( n ) = T ( n 1 ) + h e i g h t ( n )

height为该节点的高度,即 l o g 2 ( l o w b i t ( n ) ) ;
可以对每层分开记贡献即可以得到:
T ( n ) = i l o g 2 n n 2 i

所以:
1 <= T ( n ) n <= 2

恒成立
所以树状数组建树时间复杂度为O(n)

query/modify

不难想到对于任意数字,每一二进制位出现1的概率为 1 2 ,所以对于1-n的数字,期望出现 1 2 n l o g 2 n 个1
所以树状数组的查询/修改时间复杂度为 O ( n l n n )

猜你喜欢

转载自blog.csdn.net/qq_35703773/article/details/80411121
今日推荐