数据结构与算法推荐书单
对于入门的同学不建议过度追求看上去很经典的书籍,例如:《算法导论》/《算法》这些书。可以看一些相对容易看的书来入门,例如《大话数据结构》、《算法图解》。
《大话数据结构》这本书最大的特点是它将理论讲的非常有趣,不枯燥。而且每个数据结构和算法作者都结合生活中的例子进行讲解,虽然这本书有400+页,但是花两天事件读完应该是没有问题的。如果之前完全不懂数据结构和算法,可以从这本书开始。
《算法图解》和《大话数据结构》走得是同样的路线。“像小说一样有趣的算法入门书籍”,通俗易懂。它只有不到200页,所以内容比较少。看看这本书,能够让你对数据结构和算法有 个大概的认识。
入门书籍共同的问题是缺少细节,不够系统,有不够严谨。如果想系统的学习学习数据结构和算法仅靠这两本书是不够的。
《数据结构和算法分析》国内外有很多大学拿这本书当作教材。这本书非常系统/全面/严谨,而且不是特别难,适合对数据结构有一定的了解,同时至少掌握了一门编程语言的人。这本书有三个版本:《数据结构与算法分析:C语言描述》/ 《数据结构与算法分析:C++描述》/ 《数据结构与算法分析:java语言描述》。
如果你熟悉的是其它编程语言可以看一下《数据结构与算法JavaScript描述》/ 《数据结构与算法:Python语言描述》。
面试刷题宝典:
《剑指offer》这本书的作者写作目的本明确,就是为来面试。这本书包含来所有常见的/经典的面试体。应付一般的公司的面试应该不成问题。
《编程珠玑》这本书最大的特色就是讲述了很多针对海量数据的处理技巧。这个可能是其它算法书籍很少涉及到的,海量数据的处理问题再面试时也是经常会问的,特别是校招。这本书还是值得一看的。
《编程之美》这本书有多位作者,其中大部分是微软的工程师,所以质量是很有保障的。不过这本书里的题目稍微有点难,也不是很系统。
经典大部头
《算法导论》和《算法》这两本书确实很经典,但是太厚了。如果想深入学习这两本书还是强烈建议看一下的。
《算法导论》这本书安排的不是循序渐进的,里面充斥着各种算法的正确性、复杂性的证明和推倒。一般人看起来会比较吃力的。
《算法》这本书同样是经典的大部头,不过相对于《算法导论》更容易看懂,更适合初学者入门,但是这本书的缺点也很明显,内容不够全面,例如动态规划。对于数据结构的东西讲的不多,基本上就是偏重讲算法。
殿堂级经典
说道殿堂级经典非《计算机程序设计艺术》莫属。这本书的深度、广度、系统性、全面性是其它所有数据结构和算法书籍都无法相提并论。但是如果对于数据结构和算法不感冒,没有很好的数学、算法、计算机基础,想要把这套书读完、吃透还是比较难的。
偶尔加餐
《算法帝国》、《数学之美》、《算法之美》。