1. 编程珠玑笔记一开篇

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1.          编程珠玑笔记一开篇

从事于IT行业,如果不会编程,那蛤蟆只能呵呵了。

有些人将编程认识为敲字,所以一直是码农。有些人将编程认识为COPY,所以一直是搬运工。我们不是工程师,我们只是IT的搬运工~

其实编程可以不一样,是一个洞察力和创造力的集合。需要我们不停磨练编程技巧和基本的设计原理。

 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48402803

1、     开篇

是一个外部排序的问题,题目如下图1


的确,一般我们想到的就是归并排序。

         由于内存有限,所以一次放入内存中的数量受到了限制。那么意味需要进行多趟的读写到内存,需要更多的IO次数。

         而作者是采用一个位的表示方法。用一个10位长的字符串来表示一个所有元素小于10的简单的非负整数集合。如{ 1 ,2  ,3, 5 , 8}

0 1 1 1 0 1 0 0 1 0

从左到右,表示0,1,2,3,4,5,6,7,8,9。如果为1,说明在集合中,为0说明不在集合中。

这样本来需要多个字节表示的数,通过一个位就实现了,空间瞬间就剩下了几十倍有木有?

这样就可以使用107个位,做多就是1.19M左右。但是这么多位中其实有很多稀疏位可以进行压缩的。伪代码实现如下图2,:


三个阶段就是,1、初始化位数组,2、判断该值是否存在,存在设置为1。3、根据位数组输出排序文件。       

 

2、     小结:

         给人一种耳目一新的感觉,的确是本好书,值得好好品味。后续比较蛤蟆会将编程珠玑中的每一章进行记录,根据需要删掉作者的一些“废话”,呈现最精简同时也是最核心的部分。

 

 

 

 

 

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

相关推荐

编程珠玑

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

coding小世界 3005

编程珠玑笔记

第二章例子:将个具有n个元素的围向量向左旋转i个位置。例如假设n=8,i=3,那么向量abcdefgh旋转后为defghabc解法:先考虑ab,转置a得到a`b,再转置b得到a`b`,然后再转置整个a`b`得到(a`b`)`,实际上就是ba。这就导致了下面产生 旋转作用的代码,注释显示了abcdefgh向左旋转三个元素的结果。reverse(0,i-1)  //cbadefgh

门外汉的专栏 1581

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

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

weixin_33072399的博客 1083

编程珠玑笔记1

个文件里有1千万(10000000)个7位的整数(小于1千万),给大约1M内存让排序 位图(bitmap),长度10000000的bit数组a初始化为0,当数字x出现,a[x]=1,然后依次输出标志位为1的下标号。10000000bit == 1250000byte == 1220K == 1.19M。 如果严格1M做成双通道程序,第次标记前500万输出,第二次标记后500万输

secretx的专栏 980

编程珠玑ch01

笔记问题描述: 输入:个文件,至多包含n个正整数,每个正整数都要小于n,n=10710^7,如果输入时某个整数出现了两次,就会产生个致命的错误。这些整数与其他任何数据都不关联。 输出:以增序形式输出经过排序的整数列表。 约束:至多只有1MB的可用主存;但是可用磁盘空间非常充足。运行时间至多允许几分钟;10秒钟是最适宜的运行时间。 分析: 方案: 每个数32位,在1MB空间中保存2

luo359651204lxj282的博客 319

10^n个整数(亿级)的排序

输入:个最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数)的文件,其中每个数都小于等于n,且n=10^7。 输出:得到按从小到大升序排列的包含所有输入的整数的列表。 《编程珠玑》中提出的问题,有三种解法: (1)磁盘合并排序 先将所有数据分成多个小文件,多个小文件采用内部排序后,再用多路合并排序完成排序输出。         总数据为n, 内存中采用内部排序最多m。

guyulongcs的专栏 1万+

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

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

指尖飞舞 1600

【读薄《编程珠玑》】壹 开篇

这篇文章是《读薄<编程珠玑>》系列博客的第篇,在这篇文章中,我总结了在书中出现的些问题以及些解决方案。 问题集合 0x01个最多包含n个正整数的文件,每个数都小于n,其中n=107,并且没有重复。最多有1MB内存可用。要求用最快方式将它们排序并按升序输出 0x02:使用位逻辑运算来实现位向量 0x03:尽可能快的生成位于 0~n-1 之间的 k 个随机不同顺序的整数 0x04:如果在问题0

远航 | FIBOS.io 4212

编程珠玑笔记

编程珠玑笔记开篇 友好的对话 在别人不会问问题时,引导他去问问题也是个很大的学问,Jon与个程序员问的问题而展开。 问题:如何将1千万条记录排序?(都是七位的电话号码)最好是将时间控制在十秒钟左右,如果不行,几分钟也可以,但是不能超过十分钟,同时不可超过兆的内存。 Jon先生要求我思考分钟,并给他个答案。我的答案有两个,是使用链表的方式,运用插入排序的方法,二是使...

张念磊的博客 589

编程珠玑》摘要

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

DaDianJiShiQi的博客 1269

编程珠玑》读解

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

mmountains的博客 322

编程珠玑开篇2--磁盘文件排序问题再讨论

编程珠玑开篇--磁盘文件排序问题文中,要求输入时某个正整数不会重复出现。 如果每个整数重复出现的次数至多10次,我们应该如何修改方案呢?如果每个整数最多出现10次,那么我们就可以使用半个字节4位,统计出现的次数。相应的设置函数也应该修改: #define BITSPEREORD 8 // the type int contains 8 bit num#define SHIF

fisher_jiang的专栏 1457

位图排序——《编程珠玑笔记

感叹《编程珠玑》这本书字字珠玑,非常强大,看了有段时间了,所以也行整理下看的过程中的收获和问题。      在开篇章中,坐着就提出了应用非常广泛、非常强大,适合于海量互异数据排序的算法——位图排序。     问题定义: 对之多只包含n(10^7)个正整数的文件排序,每个数大小都小于n,不允许有重复的数出现,任何个数都至多出现次。     限制:可用的内存空间是有限的(

WuChangsong的博客 791

编程珠玑》——开篇

因为该问题的约束条件中描述了输入文件中最多有1千万个不重复的7位数,内存的大小限制位1MB。针对上面的问题,可以构造个长度为1000万个位的字符串,从输入文件中挨个读取输入,文件中的每个7位数都不会重复,每读入到个7位数i,便将字符串中的第i位置为1,表示该数字出现了,进行排序的时候,从0开始遍历该字符串,出现1的数代表刚才输入文件中有对应的数值,遍历完该字符串也就是从小到大完成了排序,最后将排序结果输出到输出文件中,便完成了该问题所要求的排序结果。以上就是问题的描述规范,应包含输入、输出和约束。

漫漫编程路 689

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

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

IShadow 1025

编程珠玑)位图

这个问题是编程之美中第开篇提到的问题,bitmap排序。大概意思是这样的,要对n个不重复的整数进行排序,每个数小于n(10的7次方)要求内存1M。其实是区号为800开始的电话号码,800不算在内。这个是典型的位图(bitmap,应该是位映射我觉得,估计是好翻译才把map翻译成图的)。下面是代码: #include using namespace std; const int NUM

胜利者的经验并不复杂,那就是寻找人生的关键点,并在关键时刻竭尽全力 1954

编程珠玑》读书笔记开场白

在正式写述之前,先说些闲话。 实习期间其实也是看了不少书的,可是几天下来,发觉看过的内容忘记了不少。之前也听说过导师说看了论文就定要做好笔记,否则很容易忘记的。看来做好读书笔记真的是相当重要啊。在我看来,写笔记至少有两点好处,是强迫自己总结看过的内容,二是也方便以后阅读重温已学过的知识。何乐而不为呢? 前几天买了《编程珠玑》,里面包含了不少有趣的算法问题,听说些大公司也喜欢用里面的题来

Leo的博客 1114

编程珠玑读后感1(1个算法)

 HTML Tags and JavaScript tutorialvar encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);

wmh4242424cs的专栏 486

编程珠玑》读书笔记

---------------------------基本原则------------------------1、仔细分析小问题有时可带来巨大的实际好处2、要打破概念上的障碍,转而解决个更简单的问题,才能有效地解决问题3、不要勿勿忙忙将第灵感编写为程序,应该在编码之前进行充分的思考、权衡和抉择,以找出最有效的算法和设计4、能用小的程序的话就不要编写大程序5、数据结构对软件的贡献极大:   a.

baiwen1979的专栏 1459
上一篇: Oracle主要学习资源绝对干货-DBA之路
下一篇: 2、编程珠玑笔记二算法
badman250
博客等级 码龄17年 2390粉丝 1479原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值