利用位与运算简化代码

本文介绍如何通过位与运算改进《数据结构习题解析》中countOnes()算法,降低时间复杂度至O(countOnes(n)),线性正比于数位1的数量。改进后的代码通过不断位与运算找到最低位的1,然后更新计数器,直至所有1都被统计。这种方法确保了每个1仅被处理一次,满足题目需求。
摘要由CSDN通过智能技术生成

利用位与运算简化代码

题目及代码来源:《数据结构习题解析(第三版)》,邓俊辉编著,ISBN: 978-7-302-33065-3

题目要求:改进教材中的countOnes()算法,使得时间复杂度降至O(countOnes(n)),线性正比于数位1的实际数目

/*教材算法*/

int countOnes(unsigned int n) { //统计整数二进制展开中数位1的总数:O(logn)
    int ones = 0;               //计数器复位
    while (0 < n) {             //在n缩减至0之前,反复地
        ones += (1 & n);        //检查最低位,若为1则计数
        n >>= 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值