聚合分析:二进制计数器

作为聚合分析的一个例子,我们来看一个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, 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;
}
## 这个图是我看了一个下午才理解其中的含义 ##

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值