コード例 #1
0
ファイル: NumberTree.cs プロジェクト: heiseshuixian/swimcube
        public float Sum(int range)
        {
            float sum     = 0;
            int   treeInd = range + 1;

            while (treeInd > 0)
            {
                sum     += tree[treeInd];
                treeInd -= GMath.LowBit(treeInd);
            }
            return(sum);
        }
コード例 #2
0
ファイル: NumberTree.cs プロジェクト: heiseshuixian/swimcube
        public void Set(int index, float num)
        {
            float delta = num;

            if (index >= Count)
            {
                throw new Exception("[NumberTree Set] argument out of range");
            }
            else
            {
                delta = num - values[index];
            }

            int treeInd = index + 1;

            while (treeInd < TreeCount)
            {
                tree[treeInd] += num;
                treeInd       += GMath.LowBit(treeInd);
            }
        }