读的过程真是一种享受。看到好的代码,好的思想,总会忍不住默记几遍。
看到觉得有点意味的地方最好多想想来龙去脉,想想为什么,因为紧接着的会是令人惊喜的解说。 多写写书上的代码,感觉不错(写完以后感觉忘了很久的算法又重新回来了)。 每章的“原理”部分是高度性的概括,"习题"是很好的,促使你去思考,做习题是很有必要的,不想“浪费”时间去“做习题”了的结果可能是以后会用更多的时间才能想清这些问题,还有不要只想着看答案,你会很失望,因为有些题目是没有答案的 :) ps:有很多面试题来自其中的习题
对一些算法有了更好的理解,也许是看第二遍的原因,也许是从不同的角度看会有不同的效果(所以好书要多读,每重读一次会有新的收获)。比如:在动态规划算法里,程序可以用递归算法和用表格化方法实现。递归算法的缺点是:有部分值会被重算,解决方法是用一个数组把已经计算过的值存起来,这样就不会重复计算了。表格化的算法是:没有递归算法好理解,解决办法是:在代码开头加个注释,注释就是那几条递归规则,大不了再加上说明“此代码用的是动态规划”。 ps:linux里diff的基本算法就是动态规划吧,感觉和最长公共子串类似。
读这本书收获很多,列举几个吧:
1. 书里的“程序验证” 技术很靠谱,让程序看起来清晰易懂,还能从一定程度保证正确性。
2. “哨兵”(Sentinel value )被几次用到了,感觉还不错,代码看起来更简单了,还能带来一点小小效率。
3. 时空折中与双赢。在原始设计的算法并非最佳方案时,通过改善算法是可以达到双赢的。
4. 用只分配一个较大内存块的方案来替换通用内存分配,这样就消除了很多 开销较大的调用,而且也使用空间的利用更加有效。
5. 数学模型的建立是很重要的。把数a想成用集合[a,a + 1)表示是第9章中二分查找代码调优的核心思想。数组旋转那个算法也实在是太nb了。
经典啊
《编程珠玑》热门书评
-
不只是算法
122有用 7无用 Jeao&Leon 2009-11-12
05年的时候,同学去华为工作,因为华为需要一段时间的军训洗脑,为了消磨时间,他顺带买了一本《编程珠玑》来研究,当时他和我说:一起来研究算法吧。当时粗略的在网上看了一下,觉得只是把一些常用算法罗列了而已,于是并不在意,也就这么放弃了。 06年的时候,半了一张上海图书馆的借书证,恰巧图书馆里面有这本书的...
-
思考的乐趣
61有用 2无用 hcwang 2007-12-05
薄薄的一本书,丝毫无愧于珠玑两个字能把书写薄写精的人都是无比厉害的人物,相信看过K&R的<C Progamming Language>的人都有类似的体会只要看了第一章,我相信你会对这本书佩服得五体投地。一个简洁的小例子,几个看似简单的算法,实际上包含了很多算法设计的思想.看完第一...
-
这是一本有可能让我提前掉头发的书
25有用 0无用 younghawk 2010-07-30
传说功力不强的人阅读高深的武功秘籍容易伤身甚至走火入魔。看来这本书已经逼近自己的极限。不过好消息是挺过这个过程传说功力就能上一甲子。我阅读本书的前两章是一个翻过-》退回去-》再翻过的痛苦过程,直到我把所有东西都搞懂。如同前言所说,不要急着看完它,多想想。相比某些奇技淫巧华而不实的编程难题,书中列举了...
-
思从深而行从简
22有用 2无用 interma 2009-01-16
记得第一次看《编程珠玑》还是上学的时候,当时正在准备g的实习申请,在图书馆闲而无事翻到这本小书。之前早已了解《珠》之大名,欣喜之余,2天之内就囫囵吞枣地将其翻完。合卷之时,却有些失落,书中没有讲到什么高深的算法,只是随便说说2分查找,简单dp就能给本书这么崇高的地位?如今2年多过去了,我已经明白本书...
-
将数学和编程完美结合
5有用 3无用 彬彬有你 2009-12-31
打开书本看了第一章,突然被这一章所吸引住了。真正完美的将算法和编程完美的结合,第一次这编程有美的感受,或者说编程能像数学一样优雅。也告诉我们,向别人求助时一定要准确的定位问题。只有准确的定位出问题才能真正找到适合的算法。在看第一章这前我将前言看了一下,然后我也思考了一下怎样实现,没想到最后的实现结果...
书名: 编程珠玑
作者: [美] Jon Bentley
出版社: 人民邮电出版社
出版年: 2006-11
页数: 239 页
定价: 28.0
装帧: 平装
ISBN: 9787115151711