习题7 给定一个非常长的字节序列(假设有十亿或万亿),如何高效的统计1的个数

方法一:(算法的时间复杂度就是1的个数)
[html] view plaincopy
//& 按位与  只要两个相同位同时为 1 则该位为 1
//7&5   0111 & 0101 = 0101 (5)
int OneCount(unsigned int x)
{  int count;  for(count=0; x>0; count++)  x&=x-1;//把最后面的1变0  return count;
}  方法二:
[html] view plaincopy
const int idx[256]={0,1,1,……,8}//0~255中含1的个数
int OneCount(unsigned int x)
{  int count=0;  for(; x>0; x>>=8)  count+=idx[x&255];  return count;
}

上面方法1利用的是把一个整数减去1,再和原来的整数做与运算,会把整数最右边一个1变为0。那么一个整数的二进制表示中就会少一个1,可以进行多少次这样的操作,那么整数中就有多少个1.

上面方法2中利用的是查表法,但是如果是建立一个有字节序列那么长的表肯定是不可行的,所以采用了滑动窗口的方法。取滑动窗口为256位,那么我们只需构造一个有256位的表就可以 了。

习题8  在程序中如何使用哨兵找出数组中的最大元素

#include "stdio.h"
int main()
{int i;int max;int a[100];for(i=0;i<100;++i)a[i]=i;i=0;while(i<100){max=a[i];a[100]=max;++i;while(a[i]<max)//直到找到比刚才的大的元素 i++;}printf("%d\n",max);return 0;
} 

编程珠玑第九章——习题相关推荐

  1. 编程珠玑第二章习题答案

    转载自互联网,并做了修改 1.提供单词和词典,找到该单词的所有变位词,可以事先花时间和空间处理下该词典. 为了找出给定单词的所有变位词,首先是计算给定单词的标识.如果不允许预处理,只能够顺序读取文件, ...

  2. c语言第九章课后作业答案,c语言第九章习题带答案

    c语言第九章习题带答案 - 1 - 练习9-1 答案 一.选择题 1.typedef unsigned long LONG 的作用是( D ). A.建立了一种新的数据类型 B .定义了一个整形变量 ...

  3. 工程伦理第九章习题答案

    工程伦理 第九章习题 工程伦理 1 选择题 2 讨论题 1 选择题 1-5 CDCCB 6 AD 7 ACD 8 ABCD 9 BCD 10 ABCD 11-15 × √ × √ × × 2 讨论题 ...

  4. 工程伦理 第九章习题 答案

    工程伦理 第九章习题 答案 还有 学术规范与论文写作.创业成功第一步:写好商业计划书 等课程,每天都会更新)

  5. C语言程序设计第五版谭浩强课后答案 第九章习题答案

    C语言程序设计第五版谭浩强第九章答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月.日传递给days ...

  6. DIP第九章习题解答

    数字图像处理 第九章课后作业 文档地址:数字图像处理第九章课后作业.pdf_数字图像处理第九章课后答案,数字图像处理第三版第九章课后答案-图像处理文档类资源-CSDN下载https://downloa ...

  7. shell高级编程笔记(第九章 变量重游)

    第三部分 超越基本 第九章 变量重游 如果变量使用恰当,将会增加脚本的能量和灵活性.但前提是这需要仔细学习变量的细节知识. 9.1 内部变量 $BASH 这个变量将指向Bash的二进制执行文件的位置 ...

  8. python定义构造函数、包括颜色价格品牌_《Python编程与算法基础教程》(第二版),蒋洪宇,青松,第9章:课后练习,程序设计,版江红余,第九章,习题,答案...

    例9.1~例9.53 补充: 类名为有效的标识符,一般为多个单词组成的名称,每个单词除第一个字母大写外,其余的字母均小写 一:类对象和实例对象 例9.1(创建类对象和实例对象) >>> ...

  9. 编程珠玑——第八章习题10扩展和习题11

    习题10求解的是查找数组中总和最接近于0的子数组. 们可以尝试使用"将x[0...n-1]扩展为x[0...n]"的思想,建立一个累积和表cumSum进行处理.这里假设输入数组为x ...

最新文章

  1. Linux进程间通信(IPC)-------消息队列
  2. 超融合刚刚好——蓝色光标成功应用联想超融合解决方案
  3. 文巾解题 17. 电话号码的字母组合
  4. 管程,进程及线程之间的区别
  5. NodeJS在CentOs7下安装
  6. 李洋疯狂C语言之用递归解决李白喝酒问题(附填空题解法)
  7. centos命令行安装mysql_Centos下安装mysql 总结
  8. 程序园冬天好冷怎么办?
  9. 必看企业级Redis锁资产巡检扫描业务场景实现(加锁限制扫描次数)
  10. 深入浅出 数据库索引
  11. python获取动态更新的数据_python3+beautifulsoup动态数据获取想要的内容
  12. UIAlertController 警告框
  13. hihocoder 1513 小Hi的烦恼——bitset
  14. 通过完美python注释,打印类的帮助文档
  15. jQuery lightbox插件(相册全屏效果)
  16. 破解版xmind 8
  17. WPF编程宝典--控件
  18. 学习前端的第三十二天——ES6
  19. 新电脑自带的office密钥在哪里?
  20. 字符串处理函数---strpos()

热门文章

  1. 普大喜奔:沁恒单片机免费样品申请开始啦!
  2. n条直线相交最多有几个邻补角_【初一】 n(n1)模型在相交线中的应用
  3. 廖雪峰 python_40岁老男人从0开始学python实录(第1天)
  4. 苏炫杰全国计算机等级考试,第九届全国中学生物理竞赛预赛第一试试题.doc
  5. java map 结构体_业务代码的救星——Java 对象转换框架 MapStruct 妙用
  6. java序列化库_java 中序列化(Serializable)
  7. java 变量 动态类型_Java:如何将变量从一种类型动态转换为另一种类型?
  8. mysql 缓存怎么设置_mysql中缓存如何设置
  9. python3环境下“No module named nibabel”的解决办法
  10. FPGA之道(31)VHDL编写注意事项