十本数据结构与算法书籍推荐

原文地址:http://www.oschina.net/question/587367_156025

学计算机的人是幸福的,因为在这个领域中有如此多的通俗易懂(相对来说)的经典好书,你需要做的只是坚持把它们一本一本读下去而已。在这里列出一些我看过或者准备看的算法书籍,以供参考。

第一名

原书名:The Art of Computer Programming 中文名:计算机程序设计艺术 作者:Donald E.Knuth 难度:★★★★★ 个人评价:★★★★★ 推荐程度:★★★

本书是算法分析的经典名作(用经典不太恰当,应该是圣经或史诗),被科学美国人列为20世纪12大科学名著之一(和Dirac的量子力学,Einstein 的广义相对论,von Neumann 的博弈论的著作等齐名)。其亮点在于其超乎寻常的数学技巧,要求读者拥有极高的数学修养,只要你坚持忍耐,一旦读懂了,你的算法和程序设计水平也会达到更高的档次,你会对程序设计有一种截然不同的体会和领悟,就是“道”(Tao)。

书的排版很漂亮(得益于作者的Tex系统),看起来很舒服。作者的文笔很好,写得生动活泼,读起来荡气回肠(英文版)。习题多且精华,触及算法和程序本质,书后有几乎所有习题的答案(占了整全书篇幅的1/4),书中的分析方法体现了作者严谨的风格。不过本书的程序不是用我们熟悉的高级语言描述的,而是作者设计的MIX语言。

整套书原计划出七卷,现在出了三卷:基本算法,半数值算法,排序和搜索,第四卷组合算法跳票了20年,Knuth称在2008年推出。本书有中文版,不过建议读者选用英文版,因为都学到这个程度了,英语应该不会有大困难了。

引用一句话“在我们的有生之年,可能会看到C++的消亡,但Knuth和他的程序设计艺术,将永远留在我们的心里。”

第二名

原书名: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,了解一下历史,看一下作者推荐的材料是不错的(如果你能找到的话)。

第三名

原书名:Data Structures and Algorithms Analysis in C/C++/JAVA 中文名:数据结构与算法分析——C语言描述/C++描述/Java语言描述 作者:Mark Allen Weiss 难度:★★★ 个人评价:★★★★★ 推荐程度:★★★★★

《数据结构与算法分析——C语言描述》(Data Structures and Algorithms Analysis in C)第二版,Mark Allen Weiss著,天津师范大学冯舜玺译,机械工业出版社。Weiss教授的数据结构经典教材三部曲之一,其中的C语言描述版本,也就是本书,被称为20世纪最重要的30本计算机教材之一。Mark Allen Weiss(马克?爱伦?韦斯),1987年在普林斯顿大学获得计算机科学博士学位,师从著名算法大师Robert Sedgewick,现任美国佛罗里达国际大学计算与信息科学学院教授。他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000-2004)。他的主要研究方向是数据结构,算法和教育学。中文版翻译质量很好。数学公式太多。网上可以下载书中代码,但是没有输出结果,也没有习题答案。

《数据结构与算法分析——C++描述》(Data Structures and Algorithms Analysis in C++)第三版,Mark Allen Weiss著,张怀勇等译,机械工业出版社。Weiss教授的数据结构经典教材三部曲之一。

《数据结构与算法分析——Java语言描述》(Data Structures and Algorithms Analysis in Java)第二版,Mark Allen Weiss著,天津师范大学冯舜玺译,机械工业出版社。Weiss教授的数据结构经典教材三部曲之一。

第四名

原书名:Introduction to The Design & Analysis of Algorithms 中文名:算法设计与分析基础 作者:Anany Levitin 难度:★★★ 个人评价:★★★★ 推荐程度:★★★★

算法书的另一种写法,以方法为主线,如Brute-Force, Divide-and-Conquer, Greedy techniques,书里面有很多有趣的习题

第五名

原书名:Data Structures, Algorithms, and Applications in C++ 中文名:数据结构算法与应用-C++语言描述 作者:Sartej Sahni 译者:汪诗林等 难度:★★★ 个人评价:★★★ 推荐程度:★★★

不少人推荐这本书,但我个人觉得这书不怎么样,中文版翻译水平差强人意,数据结构算法部分把该讲的都讲了,但没什么突出的地方,反而C++倒说了不少,代码的水平也不怎么样。

从ACCU的评价上看,书中的实现与BOOST和STL相比相去甚远。不过这书有很多实际问题,可以看一看。

第六名

原书名: Programming Pearls 中文名: 编程珠玑 作者: Jon Bentley 难度:★★★ 个人评价:★★★★ 推荐程度:★★★★

编程珠玑:学习算法不仅需要像Alogrithms,算法导论这样的重量级的内功心法,像《编程之美》、《编程珠玑》这样的轻量级的轻功身法也必不可少。

前些年网上不是很流行像“给你10亿个数,找到最大的n个”或者“给你10亿个数,找出现次数最多的那个数”之类的百度面试题吗?看了此书你就知道怎么解决了。

相比于《编程之美》来说,本书中的示例技巧性略低一些,但是也更有实际应用价值一些。

第七名

原书名:Algorithm Design 中文名: 算法设计 作者: Jon Kleinberg / Éva Tardos 难度:★★★ 个人评价:★★★★ 推荐程度:★★★★

Algorithm Design 算法设计 很经典的一本书,很久之前看的。个人觉得“算法设计”比“算法导论”好。

我是先看到“算法导论”后看的“算法设计”,看“算法设计”的时候还是很享受这本书的,同时也把知识巩固了一遍

第八名

原书名:算法艺术与信息学竞赛 中文名: 算法艺术与信息学竞赛 作者: 刘汝佳 难度:★★★ 个人评价:★★★★ 推荐程度:★★★★

算法艺术与信息学竞赛:如果算法导论是九阳神功,那这本无疑就是九阴真经。

本书是专为参加一些诸如ACM之类程序设计比赛的同学而写的,江湖人称“黑书”。里面讲的都是一些在编程比赛中常用的算法、数据结构,以及一些数论和计算几何等。我虽然并不搞竞赛,但也从此书中受益颇多。

第九名

原书名: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++的,因为价钱最便宜:)。本书的一个特点就是例子取得很好,代码很清晰。有中文版

第十名

原书名:Algorithms Design Techniques and Analysis 中文名:算法设计技巧与分析 作者:M.H.Alsuwaiyel 难度:★★★★ 个人评价:★★★★ 推荐程度:★★★★

这本书对一般算法书较少涉及的概率算法和近似算法作了重要的补充

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

1663-2016:人工智能发展时间轴

【新智元导读】从笛卡尔的身心二元论到波普尔《科学发现的逻辑》;从帕斯卡尝试建造机械计算机到ENIAC诞生;从达特茅斯会议召开到AlphaGo击败李世石........

4044
来自专栏华章科技

史上最烧脑物理学科普,看完瞬间涨姿势!

导读:这是一部壮丽的物理史诗,这是一串光耀后世的姓名。他们是:牛顿,高斯,黎曼,麦克斯韦尔,爱因斯坦,杨振宁,拉马努金,霍金,维藤……那么,这些智慧的头脑到底有...

925
来自专栏iOSDevLog

AI简史

“人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技...

1063
来自专栏大数据文摘

算法帝国里的牛人们:莱布尼茨

2347
来自专栏PPV课数据科学社区

用程序算法指导逗比做人生选择

每年一到要找工作的时候,我就能收到很多人给我发来的邮件,总是问我怎么选择他们的 offer,去腾讯还是去豆瓣,去外企还是去国内的企业,去创业还是去考研,来北京...

2948
来自专栏量子位

宛如白昼,谷歌发布最强夜景拍照AI算法,单摄秒杀一众苹果华为三星

是的,这张照片拍摄于夜晚,用普通模式拍照只能拍出勉强看到的酒杯和水果,在谷歌的夜视模式下,就能像白天一样,所有物品细节一清二楚。

1573
来自专栏AI科技大本营的专栏

龙妈也会死?《权力的游戏》 AI 算法预测丹妮女王危在旦夕

[1501552698539_9817_1501552698839.jpg] “凡人皆有一死。”当你进入权力的游戏,成不了赢家,就只有死路一条,马丁大神不会给你...

5218
来自专栏数据科学与人工智能

【统计学习】写给在学习统计的学弟学妹

在其他论坛看到一篇写如何学统计的文章,作者侃侃而谈,语言也不失幽默,更重要的是,平实的表述中却把很多读统计的童鞋共有的感受和疑问一同归纳总结了出来。楼主看过之后...

2049
来自专栏AI科技大本营的专栏

龙妈也会死?《权力的游戏》AI算法预测丹妮女王危在旦夕

“凡人皆有一死。”当你进入权力的游戏,成不了赢家,就只有死路一条,马丁大神不会给你任何回旋的余地。 最近,权游剧迷Milan Janosov用机器学习算法量化并...

4219
来自专栏PPV课数据科学社区

R语言学习由浅入深路线

现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言。 对于初学R语言的...

2912

扫码关注云+社区