绿林网

Algorithms经典读后感有感

Algorithms经典读后感有感

《Algorithms》是一本由Robert Sedgewick / Kevin Wayne著作,Addison-Wesley Professional出版的Hardcover图书,本书定价:USD 89.99,页数:976,特精心收集的读后感,希望对大家能有帮助。

《Algorithms》读后感(一):复习算法,学java

这本书写的很详细,图示,例子标注的都很清晰,可以节省阅读时间,专门读重要的地方。现在看的是原版,不知国内有没有翻译版本。如果是有点其他语言基础的人哪来学java很不错的。不过这本书是个大部头,不准备通读,挑重点看看即可。

《Algorithms》读后感(二):值得看

挺好,这本书很适合刚刚入门或者离开校园已久需要复习一下算法基础的人。我就算是后者。

本书前半部分都是必须得会的,即使以前知道复习一下也很好。作者发明的红黑树所以那里讲的很细致清楚。

Merge Sort我一直的解法就有他例子里面的经典performance bug,就是不应该每次都在recursive部分给local variable建新的instances而应该一直从上一层caller里面代入进来,看过后以后不会犯这一类的问题,感觉对很多recursive的解题方案都有用,我个人感觉受益匪浅。

说起实用性,这本书比很多同类的书好太多了。省去了很多数学推导,非常适合需要准备面试的人,需要快速回顾一下基本的算法及其实现。说起来,我个人觉得如果看书的目的是针对面试的话,这本算法书,加上《Cracking the Coding Interview》和《Elements of Programming Interviews》基本就够了。顶多再去网上(比如LeetCode)刷刷题。

虽然后面的几节面试的话可能也用不太上,因为估计Google也不太可能会让你在白板上写Non-Deterministic Finite Automata (NFA),但是总之知道总比不知道好,什么KMP,什么Huffman Coding,都包括了。

有一些基础的东西Linear Programming之类的复习一下之后感觉自己棒棒哒!想起了当年读研究生时学了一个学期Linear Programming的那段日子。

附加一句,估计大多数人都知道作者有24节公开课在网上,就是围绕这个书讲的,强烈建议找来看看。

《Algorithms》读后感(三):大家好,我是译者

中文译稿我刚刚交上去不久。至于这本英文版,我绝对力荐。这是一本非常适合于自学以及作为教材的算法书。和它相比,清华的什么算法教材简直就是给原始人看的。它有什么特点呢?

1、基础而全面:前两天看到Quora上的一个问题:你觉得最天才的算法有哪些(http://www.quora.com/What-are-some-of-the-most-ingenious-algorithms-in-computer-science)?大家仁者见仁智者见智说了很多。但如果你真的想弄明白他们说的这许多算法的过人之处,这本书会给你答案。

2、图示清晰易懂:随便翻开这本书的一页,你会看到什么?图,图,还是图。这本书之所以厚,示意图多是一个主要原因。看完全书,纸上全是字的页码非常的少。和国内教材的枯燥说教相比,这本书的图示可以让你从一个全新的角度理解以前你可能已经学习过的许多算法。

3、代码量少:Java成为新一代的教学语言是有原因的。Java的面向对象以及垃圾收集等特性使得读者和学生可以最大限度的将注意力集中到算法本身上去。这本书中的所有代码都不超过一页,只有很少的几处会有连续两、三页的代码,但每一页也都自成体系。这一点我非常欣赏,因为翻页会中断读者的思路。

4、数学要求低:看过《算法导论》么?看过《计算理论》么?里面的证明是不是很让人抓狂?这种事情在这本书里不存在。这本书是从一个“实用”的角度来看算法。什么是证明算法有用好用实用的最好办法?除了理论上的保证之外,实现的简洁、运行时间的数字才是王道。这本书里用的最多的就是数学归纳法,因为很多代码都是递归的。很少的地方用到了概率论。只有最后一章讲了一个比较深奥的Cook-Levin定理。不过说实在的我觉得作者并没有讲清楚,读者记住结论、领会精神也就好了。

5、API设计:书中所有的算法都有一份自己的API。作者在书中实践了“契约式”编程,并向读者展示了这种方式的妙处。关于API设计,作者也总结了一些原则,并用Java的标准库中的一些类做为例子进行了分析。这些分析无论是对刚刚入行的新手还是对老程序员都是非常有价值的。

6、科学方法:这一点才是这本书的精髓。为什么这么说?因为中国学生缺少的正是这些。不要觉得第一章有250页,而其他讲解具体算法的任何一个章节都没有第一章长,就觉得第一章是在浪费版面。作者在第一章之中为全书打下了基调,而科学的方法就是其中最重要的部分。所有算法的讲解方式,都遵循了“猜想-实验”的循环。这是人类探索自然的方式,也是科学研究的方式,也是我们所缺少的“科学精神”。

不足之处:

1、大部头,太厚了。英文版有900+页,中文版肯定也不会薄,让读者第一眼就有点泄气。

2、有时候有点罗嗦,但这一点在中文版中会得到改善。

总之,这是一本Amazon上的五星书,价值毋庸置疑。Amazon上的另一份书评(Kevin P. Murphy写的)也很好的总结了这本书的特点。如果你想学习算法而又不知道从何开始,或是已经有一定基础但又不愿意纠结于数学细节,我强烈的向你推荐这本书。

《Algorithms》读后感(四):花哨的算法書

按理說, Sedgewick 的書應該很有水平。但是看完後很失望。

這是一本給出每個算法具體實現的書,所以相比DPV或者CLRS,其介紹的內容要少得多,Dynamic Programming, Linear Programming這兩個有力的算法工具完全沒有濊及,計算理論(P/NP之類)的話題也基本少得可憐。相比300頁的DPV,這本近千頁的書反而內容少很多很多。

但是書中還是有亮點的。最大的亮點在於其圖示。大多算法的過程都有模擬的過程圖來介紹,對於人的理解很有助益。說實話,書中的一些圖還是我平生第一次見到。尤其是不同算法複雜度比較打出的散點圖,非常新穎。而且排版不錯(你能想像用Adobe InDesign排版這麼一本九百多頁的花哨算法書要費多大精力嗎?反正我被折服了),讚一個。

但除了圖外,作者的篇幅似乎浪費得太多。比如第一章基本沒講啥,卻佔用了近四分之一的篇幅。而且很多地方囉唆得令人入睡。

這書每個算法都有代碼,但質量卻不怎麼樣。而且不少有誤導性。比如書中給出了一個in-place的mergesort,按理說,in-place的mergesort寫起來很麻煩,很難做好,但書中的代碼短得令人難以相信。定睛一看,那代碼用額外的數組的,根本不能算in-place。

又比如3-way partition quick sort,我看了半天愣是沒理解他在幹嘛。而下面基於Dutch National Flag算法的的代碼要比書中的漂亮很多,且是1-pass的:

void Qsort(int * a, int left, int right) {

if (right <= left) return;

int l = left, h = right, m = left;

int pivot = a[l + rand()%(h-l+1)];

while(m<=h){

int x = a[m]-pivot;

switch((x>0)-(x<0)){

case -1: swap(a[l++], a[m++]); break;

case 0: m++; break;

case 1: swap(a[m ], a[h--]); break;

}

}

Qsort(a, left, l-1); Qsort(a, m, right);

}

再比如KMP,書中居然用起了二維數組,並且完全不突出其「自我匹配」的美感。下面的代碼就比書裡好多了。

def prefix(t, p):

pi = [0] * len(p)

q = 0

for i in range(1, len(t)):

while q > 0 and p[q] != t[i]: q = pi[q - 1]

if p[q] == t[i]: q = q + 1

pi[i] = q

return pi

def kmp(t, p):

pi = prefix(p, p)

q = 0

for i in range(len(t)):

while q > 0 and p[q] != t[i]: q = pi[q - 1]

if p[q] == t[i]: q = q + 1

if len(p) == q: return i - len(p) + 1

return -1

看到了沒?算prefix和跑kmp的代碼各區區七行(沒有任何Python高級功能,如果改成C/Java,多不出兩三行來。),其中三行是完全一樣的。這樣的代碼才能體現Knuth算法設計的美感。

許多代碼過煩瑣,不易學生讀,更難讓需面試的小朋友們記。

總之,這書我只建議在別的算法書看不懂時瞄瞄它的圖,別的就沒什麼的了。

本文由作者上传并发布(或网友转载),绿林网仅提供信息发布平台。文章仅代表作者个人观点,未经作者许可,不可转载。
点击查看全文
相关推荐
热门推荐