算法导论(Introduction to Algorithms):这是一本经典教材,内容详尽、丰富。中文版不少插图有错误,强烈建议购买英文版,然后自行比对出版商提供的errata。书后的练习题也很多,有些难度很大,建议有选择性的做。这本书主线内容有两部分——算法设计和算法性能分析。两者相互影响相互促进,是以一个完全不同于算法概论的视角来解析算法的。建议至少读三遍。
程序员实用算法(Practical Algorithms for Programmers):这本书我没有读过。前两本书详尽的介绍了如何去设计一个好的算法。这本书侧重于在工程上如何实现高质量的算法。本书中的一些算法与前两本书中描述的算法并不完全相同,这一点需要特别注意。建议读这本书的时候,同时自己多实现一些算法,对比一下差别。
算法:C语言实现(Algorithms in C):这本书比上一本书还要详尽的实现了很多常用算法。同时也不乏对算法的分析和原理的讲述。有些部分,比如红黑树,甚至比算法导论中讲述的还要精彩。