编程珠玑第一章补充

编程珠玑——第一章习题解答 1、如果不缺内存,如何使用一个具有库的 阅读详情
2、求出2.5亿个整数中不重复的数字,注意内存无法存下2.5亿的数字。

(1)说明你的思路

(2)写出你的算法,可以用语言实现或者用伪代码表示

 

个人提示:位图法

1、这里用到两个位图,先填充第一个位图a。当发现一个数字被填充过之后,则用这个数字填充b。很明显,b中记录的是重复出现过的数字。

2、当扫描完一次之后。再扫描b位图。只要出现在b位图中的数,就拿去清除a位图中的位。最后a中的数字保证是只出现一次的。

3、最后把a位图中记录的数输出。


值得注意的是:输出的数可能是负数,为了处理方便在处理时,统一转化成为无符号数,输出的时候,再转换成为负数则可。


你可以先把ms的值改小一些进行测试。由于算法针对的是2.1亿的数据量,所以常规的小数据是体现不出优势的。

当改小ms的值为100之后,你输入的值需要位于1~99之间。(如果不改MS的值,那么代码为正解)

#include <stdio.h>
#include <stdlib.h>

#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F

const unsigned long long ms = 4294967295;
int a[134217728];
int b[134217728];
void set(int *a, unsigned int i) {        a[i>>SHIFT] |=  (1<<(i & MASK)); }
void clr(int *b, unsigned int i) {        a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int  test(int *a, unsigned int i){ return a[i>>SHIFT] &   (1<<(i & MASK)); }

int main()
{
	int n;
	unsigned int x;
	unsigned long long i;
	while (scanf("%d", &n) != EOF){
		x = n;
		if (test(a, x) == 0) set(a, x);
		else set(b, x);
	}
	for (i = 0; i < ms; ++i){
		x = i;
		if (test(b, x)) clr(a, x);
	}

	for (i = 0; i < ms; ++i){
		x = i;
		if (test(a, x)) printf("%d\n", (int)x);
	}
	return 0;
}


编程珠玑 这不是一本具体算法的讲解或者代码编写的教程,但是从书中的字里行间,我们可以学到的是更多的软知识:对编程新的认识、更加发散的思维方式、更严格的代码要求、堪比瑞士军刀的小技巧…… 编程也许入门并不难,但是要想真正成为一名优秀的软件工程师,还是需要很多锤炼。内外兼修,方成大器。 基础篇 第一章 开篇首先作者提出一个实际问题: 如何给磁盘的某个文件排序,更具体来说就是是对一个最多包含1千万条记录,每条 阅读详情

相关推荐

《编程珠玑》读书笔记(一)

第一章 目的是为了引入位向量数据结构。 转载自 http://www.cnblogs.com/wuyuegb2312/p/3136831.html 位向量的定义和应用:位向量/位图在充分利用小空间存储大数据方面很有优势。Linux内核中很多用到了位向量。 一般地,对于多个对象和一个性质,这些对象可能满足(true)也可能不满足(false)这条性质。那么,为了表示所有对象对这个性质的满足情

DengNice的专栏 2091

【编程珠玑】陪着奶猫看看书--《编程珠玑》第一章

陪着奶猫看看书–《编程珠玑》第一章 没事吹吹看《编程珠玑》的感受!大家一起讨论讨论!!!

IShadow 1029

《编程珠玑》习题练习In Python——第一章 开篇

问题:如何给磁盘文件排序 输入:一个包含最多n个正整数的文件,每个数都小于n,其中n=10^7。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该数据相关联。 输出:按升序排列的输入整数的列表。 约束:最多有(大约)1MB内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化了。

vincent_hbl的博客 863

编程珠玑第一章

今天看了编程珠玑,通过自己的思考及从网上查找别人的思路,将第一章的答案整理一下。

dongqifan的专栏 742

编程珠玑:深入浅出的编程经典

本文还有配套的精品资源,点击获取 简介:《编程珠玑》是一本计算机科学的经典之作,由Jon Bentley撰写。书中不仅详细探讨了数据结构和算法,还深入分析了问题解决策略、编程的艺术与技巧,以及性能优化。书中附带源代码分析,帮助读者通过实际案例理解理论与实践的结合,从而提升编程技能和解决问题的能力。 1. 数据结构与算法详解 简介 数据结构与算法是计算机...

weixin_33072399的博客 1092

《编程珠玑》第二版:中英版书籍与源码实践

编程珠玑》第二版是计算机科学领域中不可多得的经典书籍之一,它以浅显易懂的语言深入浅出地探讨了编程实践中常见而重要的话题。该书不仅覆盖了编程语言、数据结构、算法设计等基础知识,也着重于问题解决的思维方法和最佳实践。我们将会逐章梳理书籍的精粹,介绍每章的核心议题,以及它们对编程领域的长远影响和意义。通过对这些内容的深入分析,读者将能够领略《编程珠玑》在启迪思考和指导实践方面的独特价值。最后,通过案例分析,可以将理论与实践相结合的过程进行可视化。

weixin_32661831的博客 911

编程珠玑---第一章 阅读笔记

昨天看了编程珠玑的第一章和课后题目,收获很大,大概总结下。 第一章首先提出了一个问题:如果有一个文件最多n(n=1000w)个整数,这些整数都

疯狂算法~ 1475

Windows10检查Cuda和cuDNN是否安装成功?

简介:根据上篇博客已经完成了CUDA和cuDNN的安装步骤,完成对其的安装。下面将来检查它们是否安装成功。 1 .首先win+R进入CMD,在命令行输入nvcc -V,如下图所示,则表示cuda已经安装成功。 2 .进入到cuda的安装路径,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite,找到如下两个.exe文件: 首先执行:deviceQuery.exe,查看是否出现如下界面: 然后执行bandwid

jhsignal的博客 14万+

《编程珠玑》摘要

对《编程珠玑》这本书的一些摘要

DaDianJiShiQi的博客 1287

Win11 24H2家庭版共享打印机失败?别慌,一个批处理脚本搞定所有设置

本文提供了Win11 24H2家庭版共享打印机失败的解决方案,通过一个批处理脚本自动修复所有设置问题。脚本包含安装组策略组件、修改关键注册表项等操作,帮助用户快速恢复打印机共享功能,适用于普通家庭用户。

weixin_30632089的博客 418

图形学基础知识:着色(三)Rendering Pipeline与Shader

管线(Pipeline) 什么是管线? 管线我们可以理解为流水线,流水线大家都懂,就是工厂里面生产东西的一整套流程。例如饮料厂要生产饮料,需要洗瓶子,倒饮料,加盖,包装等等,这一整套过程就是流水线。那么我们要把一个三维场景渲染成一幅二维的图像,同样需要一个先干嘛再干嘛然后干嘛最后干嘛的过程,这个过程或流水线,我们就称之为管线。 实时渲染管线(Real-time Rendering Pipeline) 通过前面几篇的学习,我们知道了要把一个三维场景渲染成一幅二维的图像大致分为以下几个步骤: M.

王王王渣渣的博客 2532

《编程珠玑》第一章Java代码实现

[size=large]我看算法的时候只看伪代码的话,感觉太抽象,总记不住,我希望能看到真正实现的代码,这样心里会感觉踏实一点。 因此,总希望能把书上的算法给具体实现了,这样一来能记住算法,加深印象,而来二来也能提高自己的编程水平。 《编程珠玑》的代码已经有C/C++的实现版本了,我在附件也贴出来了,但是,作为一个C++语言的入门者,因为还涉及到不知道如何链接C++的函数库等种种问...

limitforest1的博客 438

从零到一:Cadence AC仿真中的运放性能参数深度解析与实战避坑指南

本文深度解析Cadence AC仿真中运放性能参数的精确测量方法,包括开环增益、带宽和相位裕度等关键指标。通过实战案例分享常见设置错误的避坑技巧,帮助工程师提升设计成功率和仿真效率,特别针对全差分运放和工艺角分析提供专业指导。

www00的博客 290

编程素人眼里的编程珠玑

@编程珠玑-吐槽向 编程素人眼里的编程珠玑 作为一个cs专业的素人, 在每一个立志学好计算机的深夜搜索如何做一名优秀的程序员时,都会被推荐这本书,终于我下单了,并且在一个阳光并不充足的周末,我看完了这本书。 第一章 我个人认为第一章是我在这本书里最大的收获。第一章大概讲述了分析问题的重要性。在实际应用情境中,当我们遇见即使一个很常见的问题,我们仍然需要分析在我们的情境中,我们的数据的特点,然后根据数据的特点选择一个最适合的算法,而不是一个理论上的最好的算法。 第二章 二分法, 向量旋转方法以及变位词问题。

baozi_sun的博客 246

【开源数据集】电动车佩戴头盔检测数据集(TWHD)

佩戴头盔检测数据集VOC格式图像与标注数量各5448张

hzg19930513的博客 5165

【首发独家】华为OD机试 - 服务中心选址、服务中心的最佳位置(C 语言解题)

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单 华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典 【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南 华为 od 机试,独家整理 已参加机试人员的实战技巧 本篇华为 OD 机试题解:服务中心选址、服务中心的最佳位置

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

《编程珠玑》

《编程珠玑(第二版)》 Programming Pearls Second Edition “《编程珠玑》第一版是我职业生涯早期阅读过的最有影响力的书籍之一,第一次从该书中学到的许多观点很久以后仍然使我受益匪浅。Jon在第二版中对素材进行了大量更新,这些新例子的新鲜程度给我留下了深刻的印象。” ——Steve McConnell 《Code Complete》等多部畅销书作者如果让

丫猫Johnny的专栏 1410

swl安装无法与服务器建立链接,如何解决?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 2075

编程珠玑(1)

 这周借了本 “编程珠玑”,书不大,200多页,本以为能一周看完的,结果看完第1章就头大了。在此做点笔记,说不定找工作用得上。第1章,位图排序,一位代表一个数(如a[10]=1 表示数10存在)问题里面还有一个 选择问题,即n个数里随机取k个不同的数。开始看到题目的答案就蒙了,后来想想其实很简单。设数组为a[0]...a[n-1]1、j=n2、i=ran(0,j)     //0..j中随

ipiggg的专栏 2324

【制作100个Unity游戏之35】从零开始构建类《月圆之夜》《杀戮尖塔》的卡牌游戏(附带项目源码)

本文介绍了如何从零开始构建类似《月圆之夜》《杀戮尖塔》的卡牌游戏。主要内容包括:1)获取游戏素材资源;2)导入xyframe框架工具集;3)实现手牌弯曲排列效果,通过样条曲线控制卡牌位置和旋转;4)设计可扩展的MVD卡牌系统架构,分离数据层(ScriptableObject存储)、模型层(业务逻辑)和视图层(显示控制)。文中提供了完整的代码实现,并展示了卡牌动态排列的GIF效果演示。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1425

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

编程珠玑,字字珠玑

无论你自称是“程序猿”还是“攻城师”,只要在写程序,都免不了要和算法打交道。说起算法,第一本从你的记忆中检索出的图书是什么呢?是经典的大部 头《算法导论》?还是之前大红大紫的《编程之美》?以前它们几乎是同时映入我脑海的,分不清谁先谁后,这两本书我都读过,前者是在学校的算法课上,而后者则是在毕业求职前。   最近,我终于有了一个明确的答案,在这些算法相关的书籍中,最让我爱不释手的是《编...

DigitalSonic的自留地 290

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

编程珠玑之scaffolding

   最近在看《编程珠玑》一书,在书中第五章,出现了scaffolding一词,见中文版书中翻译为“脚手架”,不解其意。在书中的原句为“Wise programmers instead build scaffolding to give them easy access to the function.”,"Once we have the code ,well probe it with sc

Leatinfy--☆Dream and dreaming☆ 3427

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

《编程珠玑》阅读小记(1)— 开篇

1. 前言久闻《编程珠玑》一书的大名,一直没有找到合适的机会深入学习阅读,最近终于得以入手,便决心投入细细的研究,提升一下自己的编程思想与技术。阅读之后才发现,这本书确实一本不可多得的好书。它以计算机领域应用与编程算法相结合,让读者面对实际问题时,不单单局限于考虑该问题的解决方案,而是在入手实践之前能够驻足于考虑,该方案是否符合当前的实际环境,它的时间与空间的消耗是否达到了一个比较好的指标。 通过

指尖飞舞 1609

c++二分查找—来自编程珠玑

c++二分查找—来自编程珠玑 二分查找法(Binary search algorithm)是一个很常见的算法,从<编程珠玑>里再次看到时又有新的收获。      直接看代码吧,下面是常见的实现代码:      int binary_search(int *a, int num, int t) {     int start = 0, end = num - 1;     whi

chenglinhust的专栏 1564

《编程珠玑》读解 一

《编程珠玑》读解 一1. 需求分析 1. 需求分析 对于一个问题,往往要分析两层面的需求: 表需求:题目直接给出的。 里需求:对表需求进一步分析得出的问题本质。 感觉两者差不多?其实不然,从对于表需求的分析得到里需求的过程,是十分关键的。我个人称之为一种不择手段的解决问题方式。所谓“不择手段”,是指在表需求确定的情况下,通过尽可能多地删除非本质条件而得到里需求。 之所以要得到里需求,是因为仅依...

mmountains的博客 325

编程珠玑 java 答案_编程珠玑(第2版)第一章课后习题答案

第一章 开篇1.#include #include // 输入相同元素在集合内只保留一个using namespace std;int main(){set S;int i;set::iterator j;while( cin >> i )// 输入ctrl + z回车结束输入S.insert(i);for(j = S.begin(); j != S.end(); ++j)// 这里不...

weixin_35655990的博客 355
上一篇: 母牛问题
下一篇: 面试题整理-链表形式大数求和
ju136
博客等级 码龄19年 95粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值