アニメーションアルゴリズムを見てください:ツリー配列-BIT-フェンウィックツリー

前書き

フェンウィックツリーは、ツリー配列またはバイナリインデックスツリー(BIT)とも呼ばれます。これは、クエリと変更の複雑度がlog(n)のデータ構造です。主に与えられた間隔、最大値、または合計を見つけます。

次に、フェンウィックツリーの概念について詳しく説明します。

フェンウィックツリーとは

配列がある場合は、次の操作を簡単に実行したいと考えています。

  1. 配列の最初のn個の要素の合計を数えます。
  2. nからmまでの配列の要素の合計を数えます。
  3. 配列に要素を追加すると便利です。

上記の3つの質問を達成するために、このデータ構造を構築するには

配列を作成するのは非常に単純で失礼な考え方です。この配列のn番目の要素は、元の配列の最初のn個の要素の合計です。

そのような配列が構築されると、2つの操作1、2は簡単に満たされます。

ただし、操作3では、要素が更新されると、後続のすべての要素をカスケードで更新する必要があるため、操作の時間の複雑さはO(n)になります。

配列の更新が少ない場合はこのデータ構造が適していますが、配列の更新が多い場合は、より効率的な方法が必要です。

<

おすすめ

転載: blog.csdn.net/superfjj/article/details/108572307