聚合分析:二进制计数器

作为聚合分析的一个例子,我们来看一个k位二进制计数器递增问题,计数器是的初值为0.我们用一个位数组A[0,K-1]作为计数器,其中K=A.length,当计数器保存的二进制值为x时,x的最低位保存在A[0]中,而最高位保存在A[k-1]中,

废话了这么多,

## 代码 ##
#include <iostream>
using namespace std;
void count(int a[],int n)
{
    int i = 0;
    while(i < n && a[i] == 1)
    {
        a[i] = 0;
        i++;
    }
    if(i < n)
        {
    a[i] = 1;
        }
}
/*测试程序*/
int main(int argc,char const *argv[])
{
    int array[6] = {0,0,0};

    for(int i = 0; i <= 21; i++)
    {
        count(array,6);
    }
    for(int i = 5; i >= 0; i--)
    {
        cout << array[i] << " ";
    }
    return 0;
}
## 这个图是我看了一个下午才理解其中的含义 ##

你能说说最后的总代价是怎么来的吗?最后又是怎么摊还分析的吗?

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...