编程珠玑第九章——习题
习题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.提供单词和词典,找到该单词的所有变位词,可以事先花时间和空间处理下该词典. 为了找出给定单词的所有变位词,首先是计算给定单词的标识.如果不允许预处理,只能够顺序读取文件, ...
- c语言第九章课后作业答案,c语言第九章习题带答案
c语言第九章习题带答案 - 1 - 练习9-1 答案 一.选择题 1.typedef unsigned long LONG 的作用是( D ). A.建立了一种新的数据类型 B .定义了一个整形变量 ...
- 工程伦理第九章习题答案
工程伦理 第九章习题 工程伦理 1 选择题 2 讨论题 1 选择题 1-5 CDCCB 6 AD 7 ACD 8 ABCD 9 BCD 10 ABCD 11-15 × √ × √ × × 2 讨论题 ...
- 工程伦理 第九章习题 答案
工程伦理 第九章习题 答案 还有 学术规范与论文写作.创业成功第一步:写好商业计划书 等课程,每天都会更新)
- C语言程序设计第五版谭浩强课后答案 第九章习题答案
C语言程序设计第五版谭浩强第九章答案 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 2.写一个函数days,实现第1 题的计算.由主函数将年.月.日传递给days ...
- DIP第九章习题解答
数字图像处理 第九章课后作业 文档地址:数字图像处理第九章课后作业.pdf_数字图像处理第九章课后答案,数字图像处理第三版第九章课后答案-图像处理文档类资源-CSDN下载https://downloa ...
- shell高级编程笔记(第九章 变量重游)
第三部分 超越基本 第九章 变量重游 如果变量使用恰当,将会增加脚本的能量和灵活性.但前提是这需要仔细学习变量的细节知识. 9.1 内部变量 $BASH 这个变量将指向Bash的二进制执行文件的位置 ...
- python定义构造函数、包括颜色价格品牌_《Python编程与算法基础教程》(第二版),蒋洪宇,青松,第9章:课后练习,程序设计,版江红余,第九章,习题,答案...
例9.1~例9.53 补充: 类名为有效的标识符,一般为多个单词组成的名称,每个单词除第一个字母大写外,其余的字母均小写 一:类对象和实例对象 例9.1(创建类对象和实例对象) >>> ...
- 编程珠玑——第八章习题10扩展和习题11
习题10求解的是查找数组中总和最接近于0的子数组. 们可以尝试使用"将x[0...n-1]扩展为x[0...n]"的思想,建立一个累积和表cumSum进行处理.这里假设输入数组为x ...
最新文章
- Linux进程间通信(IPC)-------消息队列
- 超融合刚刚好——蓝色光标成功应用联想超融合解决方案
- 文巾解题 17. 电话号码的字母组合
- 管程,进程及线程之间的区别
- NodeJS在CentOs7下安装
- 李洋疯狂C语言之用递归解决李白喝酒问题(附填空题解法)
- centos命令行安装mysql_Centos下安装mysql 总结
- 程序园冬天好冷怎么办?
- 必看企业级Redis锁资产巡检扫描业务场景实现(加锁限制扫描次数)
- 深入浅出 数据库索引
- python获取动态更新的数据_python3+beautifulsoup动态数据获取想要的内容
- UIAlertController 警告框
- hihocoder 1513 小Hi的烦恼——bitset
- 通过完美python注释,打印类的帮助文档
- jQuery lightbox插件(相册全屏效果)
- 破解版xmind 8
- WPF编程宝典--控件
- 学习前端的第三十二天——ES6
- 新电脑自带的office密钥在哪里?
- 字符串处理函数---strpos()
热门文章
- 普大喜奔:沁恒单片机免费样品申请开始啦!
- n条直线相交最多有几个邻补角_【初一】 n(n1)模型在相交线中的应用
- 廖雪峰 python_40岁老男人从0开始学python实录(第1天)
- 苏炫杰全国计算机等级考试,第九届全国中学生物理竞赛预赛第一试试题.doc
- java map 结构体_业务代码的救星——Java 对象转换框架 MapStruct 妙用
- java序列化库_java 中序列化(Serializable)
- java 变量 动态类型_Java:如何将变量从一种类型动态转换为另一种类型?
- mysql 缓存怎么设置_mysql中缓存如何设置
- python3环境下“No module named nibabel”的解决办法
- FPGA之道(31)VHDL编写注意事项