读书笔记第一周《编程珠玑》

——《编程珠玑》读后感

  因为时间原因,现在只读了书的前四章以及关于代码优化的第九章,虽然感觉因为语言文化的差异或者翻译的问题,行文感觉十分别扭,但是仍是收益良多。

  开篇提出的问题的解决方式令人印象深刻,巧妙地利用位图的方式解决了一个电话号码的排序问题,并且大大降低了时间与空间复杂度。其实引人深思的不仅是这样一种算法,而是文中告诫大家,我们不应当看到问题的第一时间就在脑中搜索我们学习的相关知识,这样很容易搜寻到不是最适合此问题的解决办法。作者在获取更多关于问题的信息后,得到了这个问题数据独有的特征,数据大小在0到10000000之间,不会重复,内存有限,至多1M左右,运行时间在1min以内,在提取出这样的特征之后,想到位图的数据结构几乎是顺理成章了。这也告诫我们,碰到问题之后,我们应当花更多的时间去了解问题。

  第二章则又提出了三个问题,提到了二分查找的广泛应用,打破了对二分查找的狭隘理解,以及一种旋转矢量的巧妙算法(感觉用到了数论的一些知识)。感觉最巧妙的还是对与查找字典中所有变形词集的巧妙解法,其采用利用签名归类的方法,然后对签名进行排序,我之前从来没有遇到过,感觉十分新奇。

  第三章讲了一些数据结构的技巧,展现了其在简化代码上的重要作用,主要展示了数组在数据统计的应用,但是这一章大部分感觉读来不是很通顺,不知道是不是翻译的原因。

  第四章再次讨论了二分查找,这无疑是我看的最开心的一章,特别是读到一个测试中,半小时内只有10%的程序员写出了对大部分数据可以使用的二分查找算法,而且算法的提出是在1946年,但是第一个没有bug的二分查找算法在1962年才出现。不由让我想起在学习数据结构时,我曾经尝试编写二分查找却花费了比我预想的多的多的时间,这么看来,自己并没有自己想的那么挫。

  第九章讲了代码优化的许多小技巧,其中一个例子十分有意思,研究基因与全球位置的关系时候,将经纬度更换为xyz坐标,这样有关三角函数的运算都转化为了加减法,运算量大大降低并且举了循环展开的例子,对简单函数用宏定义方法替代等技巧。

  总体感觉还是比较有意思的,但是语言风格真的不是很适合国人,下周应该不会看下去了。

原文地址:https://www.cnblogs.com/zsl96/p/8596007.html

时间: 2024-10-31 00:23:06

读书笔记第一周《编程珠玑》的相关文章

第8周读书笔记-读《编程珠玑》有感

读<编程珠玑>有感 <编程珠玑>(后文简称<珠玑>)在序章中就开宗明义地提出了两个问题:一个是如何对实际问题进行抽象,找出问题的独特性质.二是一个富有意思的小题目:"如何在1MB内存内对0~10^7内若干元素组成的集合内的整数进行排序(10s内)".一开始我想到的是归并排序,但是书中提出可以利用位图的位向量,不用考虑任何排序算法,只需要遍历两次即可,忽然就有茅塞顿开之感,从这个简单的例子中就可以对一些思想窥见一斑:位图数据结构.简单的设计.时间-空间

读书笔记--编程珠玑II

学化学的应该都知道chemdraw,这是一款专门绘制化学结构的软件,什么苯环.双键各种word难以搞定的分子式,你可以轻松的用chemdraw完成,可以称得上化学工作者居家旅行必备的良药.其实早在1987年的时候,贝尔实验室的大牛Brian Kernighan(就是K&R教你写C语言中的K)和人一起设计了Chem语言,到现在还能用,似乎在书籍排版上比chemdraw的效果更好.说了这么多,咱不是给Chem做广告,而是为了引出它的另一位创作人Jon Bebtley,也是本文即将谈到的<编程珠玑

【读书笔记】《编程珠玑》第一章之位向量&amp;位图

此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书籍,而且算法数据结构方面的知识储备实在是薄弱,这么看来,纯粹找虐啊orz.今此行为,歇业养伤,实属无聊.也可说是自打毕业后,看书如打仗,自视身处"安安稳稳的和平年代",闲来了也就闲着,忧患意识甚少,有也退退缩缩.话说回来,这本书不像CLRS那种难打的硬仗(现在想想都脑仁疼啊),<Pr

iOS 读书笔记 第一章

1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *array = @[@"1",@"2"]; if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]) { //do something use sortUsingComparator: }

《Java并发变成实践》读书笔记---第一章 简介

<Java并发编程实战>深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册.书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险.构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁.原子变量.非阻塞算法以及

读书笔记第二周《程序员的自我修养》

读书笔记第二周<程序的自我修养> ??刚看到书名的时候以为这是一本讲述程序员为人处世,享受生活的文章,当我抱着当小说看消遣的心情从群里下载下来的时候,却发现这实际上是一本干货满满的书.当我看到副标题--链接,装载与库, 我意识到这会是一本让我受益匪浅的书,因为我没有选修过操作系统,编译原理相关的课程,对于代码 是如何在电脑上跑起来的是毫无概念的,每次配置环境变量,配置链接库,都是一头雾水.而且我认为要成为一个优秀的程序员 ,仅仅满足于代码能运行是远远不够的,只有对背后的运行机制有所了解,才能写

《javascript权威指南》读书笔记——第一篇

<javascript权威指南>读书笔记--第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本书来补充下. 今天是今年的196天,由于我之前承诺过,每天分享读书笔记,只是之前分享的是大众读物,所以随手分享到kindle阅读群里了.但是现在读的是技术类书籍,分享到kindle读书群不太合适,所以还是以博客的形式分享.这样子,一个链接,大家感兴趣了就点开看看,不感兴趣了,就不点开. 其实这篇文章应该是昨天

读书笔记-----Java并发编程实战(一)线程安全性

线程安全类:在线程安全类中封装了必要的同步机制,客户端无须进一步采取同步措施 示例:一个无状态的Servlet 1 @ThreadSafe 2 public class StatelessFactorizer implements Servlet{ 3 public void service(ServletRequest req,ServletResponse resp){ 4 BigInteger i = extractFromRequest(req); 5 BigInteger[] fact

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到