做为Python小白,本人几个月前读完了Mark Lutz的1400页巨著《Learning Python》(太TM啰嗦了,读过的请举手),本打算继续学习下一步《Programming Python》, 但觉得基础过于薄弱,所以决定先找一本Python的算法书学习一下 。一方面可以打个扎实一点的数据和算法的基础,另一方面可以进一步熟悉一下Python语言和代码。
想法可嘉,但是问题很快来了,选哪本算法书呢?反正书都不贵,最后除了本文的主角书目,作者还买了其他几本相关书籍:
- 《数据结构与算法 Python语言实现》-- Goodrich, Tamassia, Goldwasser; 译者 张晓,赵晓南 (以下按作者名字简称GTG)
- 《Python 算法教程》-- 由大神Magnus Hetland撰写(也就是Python基础教程的作者)
- 《图解数据结构–使用Python》-- 吴灿铭
- 《你也能看得懂的Python算法书》-- 王硕等
- 《算法》-- Sedgewick (早两年为了显摆买的,买来才发现是Java写的,褶子了!)
经过三个月的时间,作者完整阅读了GTG这本书,将书中代码全部手敲一遍,并进行了实施。其他的几本也或多或少地翻阅了一些,下面分享一下学习心得。
- GTG这本书中的算法种类非常完善,和Sedgewick的内容高度一致。其中对树的遍历,优先级队列,堆(尤其是基于堆的优先级队列),映射和哈希,搜索树(二叉树,平衡树,AVL,2-4树,红黑树),文本处理,都有非常深入的解释和代码。但最后的关于图的一章感觉比较单薄,止于Dijkstra, Prim-Jarnik, Kruskal算法,不太过瘾。
- GTG使用的是图解算法过程,主要算法都配上了分步过程图,非常易懂,这一点可以和Sedgewick媲美。吴灿铭老师的版本在图解上做得也很好