有关数据结构与算法方面的经典书籍推荐

如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。

如果只开一门课,那剩下的就一定是:数据结构与算法。

下面列出一份数据结构算法书目,先从最著名的说起

A

B

C

D

上面那本书的姐妹篇,内容就简单很多了,该书写法有个特点就是每一个主题都从一个基本的观念出发,然后再逐渐深入讨论,这样做能使解释更清晰,富有启发性。不过这本书写于20年前,所以有一些高级内容如红黑树是没有的,拿这本书做教材的读者最好同时拿一本较新的来做参考。

E

Robert Sedgwick是Knuth的学生,现在是princeton的教授。这是三个系列,与上面用伪码描述算法不同,本书用现今流行的语言C,C++,Java描述.那么选拿哪一种语言好呢?从算法的角度看,任何高级语言都是没区别的,虽然实现算法的时候,到了语言相关的层面会有一些细微区别,但影响不大。个人推荐C++的,因为价钱最便宜:)。本书的一个特点就是例子取得很好,代码很清晰。有中文版

F

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

G

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

H

不少人推荐这本书,但我个人觉得这书不怎么样,中文版翻译水平差强人意,数据结构算法部分把该讲的都讲了,但没什么突出的地方,反而C++倒说了不少,代码的水平也不怎么样。从ACCU的评价上看,书中的实现与BOOST和STL相比相去甚远。不过这书有很多实际问题,可以看一看。

I

这本是国人写的最好的数据结构算法书之一,讲得很细致。最后的三章:复杂性,并行算法,高级专题有一些有趣的东西,是这些高级内容的很好的导论。

J


上面的书适合哪些人

做学术研究:A+C+F
学过初级课程要深入:C+F+(I后三章)
在职或讲求实用:E
入门:B或D
程序设计竞赛:B+G+(I前八章)
考研或程序员考试:J
经验分享 程序员 微信小程序 职场和发展