正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史记录

版本 1 下一个 »

用于数组区间求和,相比于前缀和的方式,树状数组的优点是能有效应对单点修改

树状数组区间求和以及单点修改的时间复杂度都是O(logn),而前缀和虽然区间求和时间复杂度为O(1),但更新一个元素后需要重新计算前缀和,时间复杂度为O(n),如果要频繁更新数组元素,则效率不如树状数组。

树状数组的思想是将区间分成大小不同,相互包含的一些节点,在区间求和或单点修改时,只需要查询或更新较大的节点,而不需要处理较小的节点。

以下是一个树状数组的示例:

draw.io

Diagram attachment access error: cannot display diagram

原数组是a1~a8,数组状数组是c1~c8,它们的大小完全一样,并且都从下标1开始存储元素。

分析原数组和生成的树状数组的关系,











  • 无标签