浅谈树状数组(伪讲解)

来源:互联网 发布:2016淘宝快排阀严查 编辑:程序博客网 时间:2024/04/20 18:10

树状数组主要用于解决:点更新,区间查询的问题。都是log(n)的复杂度

树状数组与线段树类似,都是一个树包含多个树。但树状数组更为随意,但更符合机器的规则,二进制运算明显更快。

与线段树的区别:线段树试用范围更广,解决的问题比树状数组多。树状数组的代码明显更加简短。

树状数组的大小只需开一个和原数组大小一样的即可

附主要代码:

//修改操作    void add(int k,int num)  {      while(k<=n)      {          tree[k]+=num;          k+=k&-k;      }  }  //查询操作int read(int k)//1~k的区间和  {      int sum=0;      while(k)      {          sum+=tree[k];          k-=k&-k;      }      return sum;  }  




0 0
原创粉丝点击