有关算法方面的经典书籍推荐

尊重原著!

如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。Niklaus Wirth说:算法+数据结构=程序,不说废话了,下面列出一份数据结构算法书目,先从最著名的说起
A
原书名:The Art of Computer Programming
中文名:计算机程序设计艺术
作者:Donald E.Knuth
难度:*****
个人评价:*******
推荐程度:****
本书是算法分析的经典名作(用经典不太恰当,应该是圣经或史诗),被科学美国人列为20世纪12大科学名著之一(和Dirac的量子力学,Einstein 的广义相对论,von Neumann 的博弈论的著作等齐名)。其亮点在于其超乎寻常的数学技巧,要求读者拥有极高的数学修养,只要你坚持忍耐,一旦读懂了,你的算法和程序设计水平也会达到更高的档次,你会对程序设计有一种截然不同的体会和领悟,就是“道”(Tao)。书的排版很漂亮(得益于作者的Tex系统),看起来很舒服。作者的文笔很好,写得生动活泼,读起来荡气回肠(英文版)。习题多且精华,触及算法和程序本质,书后有几乎所有习题的答案(占了整全书篇幅的1/4),书中的分析方法体现了作者严谨的风格。不过本书的程序不是用我们熟悉的高级语言描述的,而是作者设计的MIX语言。整套书原计划出七卷,现在出了三卷:基本算法,半数值算法,排序和搜索,第四卷组合算法跳票了20年,Knuth称在2008年推出。本书有中文版,不过建议读者选用英文版,因为都学到这个程度了,英语应该不会有大困难了。引用一句话“在我们的有生之年,可能会看到C++的消亡,但Knuth和他的程序设计艺术,将永远留在我们的心里。”
B
原书名:Introduction to Algorithms
中文名:算法导论
作者:Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein
难度:***
个人评价:*****
推荐程度:*****
本书俗称CLRS(作者名字的简写),算法的经典教材,堪称算法分析著作中的“独孤九剑”。作者之一Ronald L.Rivest 由于其在公开秘钥密码算法RSA上的贡献获得了ACM图灵奖。全书内容全面,结构清晰,6个部分1000多页把数据结构算法的主要内容都包含了。作者用图表,伪码解释每一个算法,通俗易懂而不失严谨性,英文比较简单,语言流畅,因此,与TAOCP相比,这本书更适合初学者,不要求读者拥有很强的数学背景和丰富的编程经验。书中习题安排合理,难度适中,在网上有全部习题的答案,网上还有作者在MIT讲述本书的课程的录像,可谓资源丰富,值得注意的是书中每一章后面都有一个Chapter notes,了解一下历史,看一下作者推荐的材料是不错的(如果你能找到的话)。
C
原书名:The Design and Analysis of Computer Algorithms
中文名:算法设计与分析
作者:Aho,Hopcroft,Ullman
难度:****
个人评价:*****
推荐程度:*****
该书写于1976年,作者Hopcroft是 1986年ACM图灵奖得主,这三个人写过很多书,大多数都是经典,于一般的算法书不同,该书侧重于证明算法的正确性和复杂性,而不是怎样实现和应用算法,叙述上更加形式化,属于定义-引理-定理的数学书风格,认真研究一下里面的证明能大大提高理论水平。如果你看完了CLRS或其他数据结构入门书,要深入学习算法,但TAOCP看起来又太吃力的话,这本比较适合。最后一点是书中的习题很精华,即使你不看这本书,做一下里面的习题也是非常有意思的
D
原书名:Data Structures and Algorithms
中文名:数据结构与算法
作者:Aho,Hopcroft,Ullman
难度:***
个人评价:****
推荐程度:****
上面那本书的姐妹篇,内容就简单很多了,该书写法有个特点就是每一个主题都从一个基本的观念出发,然后再逐渐深入讨论,这样做能使解释更清晰,富有启发性。不过这本书写于20年前,所以有一些高级内容如红黑树是没有的,拿这本书做教材的读者最好同时拿一本较新的来做参考。
E
原书名:Algorithms in C,Algorithms in C++,Algorithms in Java
中文名:算法I-IV(C实现),算法V(C实现)(C++实现)(Java实现)
作者:Robert Sedgewick
难度:***
个人评价:****
推荐程度:****
Robert Sedgwick是Knuth的学生,现在是princeton的教授。这是三个系列,与上面用伪码描述算法不同,本书用现今流行的语言C,C++,Java描述.那么选拿哪一种语言好呢?从算法的角度看,任何高级语言都是没区别的,虽然实现算法的时候,到了语言相关的层面会有一些细微区别,但影响不大。个人推荐C++的,因为价钱最便宜:)。本书的一个特点就是例子取得很好,代码很清晰。有中文版
F
原书名:Algorithms Design Techniques and Analysis
中文名:算法设计技巧与分析
作者:M.H.Alsuwaiyel
难度:****
个人评价:****
推荐程度:****
这本书对一般算法书较少涉及的概率算法和近似算法作了重要的补充
G
原书名:Introduction to The Design & Analysis of Algorithms
中文名:算法设计与分析基础
作者:Anany Levitin
难度:***
个人评价:****
推荐程度:****
算法书的另一种写法,以方法为主线,如Brute-Force, Divide-and-Conquer, Greedy techniques,书里面有很多有趣的习题
H
原书名:Data Structures, Algorithms, and Applications in C++
中文名:数据结构算法与应用-C++语言描述
作者:Sartej Sahni 译者:汪诗林等
难度:***
个人评价:***
推荐程度:***
不少人推荐这本书,但我个人觉得这书不怎么样,中文版翻译水平差强人意,数据结构算法部分把该讲的都讲了,但没什么突出的地方,反而C++倒说了不少,代码的水平也不怎么样。从ACCU的评价上看,书中的实现与BOOST和STL相比相去甚远。不过这书有很多实际问题,可以看一看。
I
原书名:
中文名:算法与数据结构
作者:傅清祥 王晓东
难度:***
个人评价:****
推荐程度:****
这本是国人写的最好的数据结构算法书之一,讲得很细致。最后的三章:复杂性,并行算法,高级专题有一些有趣的东西,是这些高级内容的很好的导论。
J
原书名:
中文名:数据结构(C语言版)
作者:严蔚敏 吴伟民
难度:***
个人评价:***
推荐程度:***
另一本写的较好的中文数据结构算法书,这本书特别适合考试用(没有任何轻视的意思)
上面的书适合哪些人(我只是学生,这只是个人意见)
做学术研究:A+C+F
学过初级课程要深入:C+F+(I后三章)
在职或讲求实用:E
入门:B或D
程序设计竞赛:B+G+(I前八章)
考研或程序员考试:J

时间: 2024-10-07 03:16:18

有关算法方面的经典书籍推荐的相关文章

【转】30本关于asp.net相关的经典书籍推荐

引自:http://blog.csdn.net/shanzhizi/article/details/7731344 一.入门 1.<HTML与CSS入门经典(第7版) >HTML入门       点评:html语言的入门,由于html极其简单所以同类其他书也可代替,本书并非经典,本书摆在这里纯属占位!你可以用其他书代替. 2.<C#入门经典(第3版)>C#入门点评:经典中的经典,个人认为是30本书里最重要的,虽然其他讲C#的好书也很多但大多1.0版的,很多在书店已经绝版,被<

Linux好书、经典书籍推荐

Linux好书.经典书籍推荐 思想篇 <Linux/Unix设计思想> 图书将Unix与Linux的原理有效地结合起来,总结了Unix/Linux软件开发中的原则.在保留了第1版中Unix方面的内容的同时,强调了Linux和开源领域的新思想. 入门篇 <Linux程序设计(第4版)> <Linux程序设计>是Linux程序设计领域的经典名著,以简单易懂.内容全面和示例丰富而受到广泛好评.中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮一直

Oracle经典书籍推荐

转自:http://www.cnblogs.com/fjfzhkb/archive/2007/12/05/983381.html 很多网友询问如何选择入门书籍,学Oracle有什么好书,这里给出一些常见书籍的介 绍.首先声明,本文只涉及国外作品,因为国内的作品好的极少,大多是拼凑之作.提到入门学习,我又得搬Tom(Thomas Kyte)出来了.他在Ask Tom和他最新的书里都介绍了他认为比较好的学习途径和阅读资料.他推荐的资料都是Oracle的官方文档,有个网友在版上也提出是不是通读文档就可

Linux经典书籍推荐

入门篇 <LINUX权威指南>书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux .另外比较热门的也可以看看<鸟哥的私房菜>等书,偏管理类的书.如果想做server方向的可以找来看看. 驱动 篇 <LINUX设备驱动程序 >就是网上说的“LDD”,经典之作,必备书籍.国产经典<Linux驱动详细解>也是一本非常不错的书,很实用,书中源代码 分析比较多,基于2440的,对linux外围驱动有很全面的讲解 内核篇 浙 江大学的

C/C++/Objective-C经典书籍推荐

C语言要从大而全,从基础開始.它属于最好的.别被它误导.它也有非常多错误,不适合标准软件开发人员使用.变量声明,定义,编程规范全然不合规范,可是从语言学习方面做到极致,有大量不同的样例和试题.标准的教科书式的书籍:<C语言程序设计>(谭浩强) c++基础语言学习方面<C++ primer>应该是老大,从基础教起,面面具到.可是他相同少不了老外书籍的弊病,整本书总是拿那几个演示样例摆弄来摆弄去.没有新意,不利于面的扩展.这尽管添加了横向比較,可是违反了学习语言的最佳方法--先模仿后创

Java经典书籍推荐

Core Java 2(最新版已经到了第七版,共2卷):基础 Thinking in Java(最新版已经到了第四版):提高 Effective Java:高级(强烈推荐) The JavaTM Virtual Machine Specification, Second Edition(深入剖析JVM的运行机制):难 The Java Language Specification(官方规范):难 企业级开发(学习完EJB才看): Mastering EJB Effective Enterpris

经典书籍推荐

1   网络编程书籍 Books by Richard Stevens (reverse chronological) UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications, Prentice Hall, 1999. UNIX Network Programming, Volume 1, Second Edition: Networking APIs: Sockets and XTI, Pr

C/C++经典书籍推荐

C语言要从大而全,从基础开始,它属于最好的.别被它误导,它也有很多错误,不适合标准软件开发者使用,变量声明,定义,编程规范完全不合格,但是从语言学习方面做到极致,有大量不同的例子和试题,标准的教科书始的书籍:<C语言程序设计>(谭浩强) c++基础语言学习它应该是老大,从基础教起,面面具到,但是他同样少不了老外书籍的弊病,整本书总是拿那几个示例摆弄来摆弄去,没有新意,不利于面的扩展.这虽然增加了横向比较,但是违反了学习语言的最佳方法--先模仿后创造:<C++ primer> <

软件测试经典书籍推荐

1.<软件测试> 作者Ron Patton ,译者 :周予滨,姚静,机械工业出版社 2.<软件测试> 作者:Paul C Jorgensa ,译者:韩柯,杜旭涛 ,机械工业出版社 3.Automated Software Testing Introduction Mangement and Performance 作者:EIfridede Dustin 等 ,清华大学出版社 4.<软件测试自动化> 作者:Paniel J Mosley Bruce A Posey 译者: