【学习笔记】数据结构:树状数组(一)单点修改

本文介绍了树状数组(也称为二进制查找树)的基础知识,包括其与线段树的比较,单点修改操作以及区间查询的实现。通过lowbit的概念,阐述了树状数组如何进行高效的数据更新和查询。总结提到,树状数组适用于区间求和问题,而线段树更适合求最值场景。
摘要由CSDN通过智能技术生成


前言

平常打线段树是不是打得烦了?代码量长 ,难修改?
那就学学树状数组吧!
单点修改:树状数组 30 30 30 行,线段树 50 50 50
区间修改:树状数组 40 40 40 行,线段树 100 100 100
看到没有,这就是差距!

什么是树状数组?

树状数组又名二进制查找树,为什么呢?让我们来看一看吧。
(以下图片来自网络)
在这里插入图片描述

乍一看好像没什么头绪,刚才说了,树状数组又名二进制查找树,把它的编号转成二进制看看?
在这里插入图片描述
显然:

在这里插入图片描述

设当前编号末尾有 x x x 个0
那么这一个点就有 ( x + 2 ) (x+2) (x+2) 条边 (一条连向父亲)
( x + 1 ) (x+1) (x+1) 条边(除去连向父亲的边)所连向的值都要到当前这个个点(一般是累加)。

l o w b i t lowbit lowbit

现在再引入树状数组一个很重要的思想: l o w b i t lowbit lowbit

l o w b i t lowbit lowbit 有什么用呢?

我们可以通过 l o w b i t lowbit lowbit 来得到最后一个 1 1 1 (二进制下)在哪个地方(并不严谨)
举个栗子:
l o w b i t ( 6 ( 10 ) ) = 2 ( 10 ) lowbit(6_{(10)})=2_{(10)} lowbit(6(10))=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值