我大学里的专业是电气工程,毕业之后吃了计算机这口饭,而且是从写程序做起的,当初难免被人诟病,不是计算机科班出身,底子差。说实在的,这也难怪大家会这么想,我现在能想起来的,我们专业当时只有三门计算机相关的课程,《微机原理》,《Fortrun语言》和《C语言》,如果单片机也算的话,就是四门。上学的时候对计算机很有热情,学了一堆的语言和工具,象什么C++,VB,Visual C++之类的。后来听说“程序设计=语言+数据结构”,就向高年级的师兄借了一本C语言相关的数值计算算法的,结果里面的数学推导和证明,搞得我云里雾里的,从此对“算法”这两个字,有了敬畏的感觉。
我比较系统的学习数据结构和算法,是在工作之后。其间确实读过一些烂书,害我走过一些弯路。本着“公开表扬,私下批评”的原则,对这些烂书就不点名了。在我读过的关于算法和数据结构的书中,我还是觉得Robert Sedgewick的Algorithms in C++系列最好。我最初读的是高教出版社出的影印版,在当时,这一套五个部分的经典之作回答了我许多关于算法和数据结构的疑惑,使我至今仍然觉得,没有人能够将算法和数据结构解释的比Robert Sedgewick更清楚易懂了。本来Introduction to Algorithms也是一部关于算法的经典之作,只可惜其中的代码全部使用类似Pascal的伪码实现,对于我这样非科班出身又没有学过Pascal的人来讲,看起来就比较累,不如Algorithms in C++舒服了。
我觉得,Algorithms in C++最显著的一个特点,就是包含大量的图表和代码,并辅以详尽的文字描述,使人能够很容易地理解相关的算法的精髓所在。同时,它也比较注重分析算法与数据结构之间的互动关系,试图说明为什么有些算法适合某些数据结构,而对于另一些可能就效率不佳了。我个人认为,对于学习算法和数据结构来讲,Algorithms in C++的五部分绝对可以作为一个起点。同时,它的中译本的翻译质量也属上乘,值得推荐。
http://www.rtnnull.com/blog/article.asp?id=30