Skip to content
thzt edited this page Jan 20, 2015 · 2 revisions

Book Information

Review by [thzt]

  • Rank: ★★★★
  • Hard: ★★★
  • Tag: 算法,抽象数据类型,排序,查找,图,字符串
  • Reviews:

终于把这本书看完了,之前看的一本是《算法导论》。

跟算法导论比起来,这本书更现代化。

仿佛从游牧民族回到了高科技的今天。

当然算法导论也有好的方面,请参考相关书评。


现在,再回忆一下这本书的结构和内容,真的令人很不舍。

阅读起来就好像读一本武侠小说一样,不想让它结束。

本书的结构上有以下几点特色。


  • 使用科学方法指导实践

科学方法:观察,假设,预测,核实,反复。

提出所有假设必须是可证伪的,实验必须是可重现的。

这对研究一个偏理论的学科至关重要,能摆正世界,模型,实验,三者之间的关系。


  • 不断改进,再现算法的发现过程

很多书中讲解算法,只讲解已有的成果,并不知道这些成果是怎样想出来的。

这本书,每章都循序渐进的,从简单算法开始,逐渐改进它,直到目前常用的算法。

然后,介绍一下目前研究状态,以避免非专业人士在其中浪费时间。


  • 面向对象的设计,以及抽象数据类型,降低思维的深度

面向对象的封装,使得信息得以隐藏,我们只需要关注一个特定功能即可。

我们不用考虑程序的其他部分,使得理解算法更简单了。

本书并没有用很多篇幅来介绍数据结构,而是将数据结构具体实现为了一个个的抽象数据类型。

这使得算法的描述能落到实处。


  • 测试驱动开发,测试用例指导设计接口,并进行验证

本书对每一个算法,都使用相应的测试用例进行约束。

这不但符合科学的实验验证方法,还减少了对抽象数据类型接口的描述性说明。

让我们可以清楚的知道,它们用起来是什么样子的。


  • java具体实现,可运行的源代码

很多算法书上,并没有给出具体实现,或者只给出了部分实现。

让读者很难有一个全局的观点认识特定算法。

本书不同的是,使用了java语言实现了几乎所有的算法细节。

让我们知道算法的实现,代码其实很少,是算法的思想重要。


本书内容上,博大精深,主要介绍了以下几方面的内容。

  • 排序

插入排序,希尔排序,归并排序,快速排序,优先队列

  • 查找

二叉查找树,平衡查找树,散列表

深度优先搜索,广度优先搜索,最小生成树,最短路径

  • 字符串

字符串排序,单词查找树,字符串查找,正则表达式


我们发现,每一种算法其实都是基于一种特定的数据结构而实现的。

从面向对象的角度来看,算法和数据结构融合成了一个完整的数据类型。

我们会更容易看出,算法维持数据结构不变的本质特征。


最后,本书中的图示非常之多,算法的执行过程一目了然。


好了,不多说了,再说说缺点吧。

缺点可能和翻译有关,有些语句不是特别通顺,理解起来有些困难。

好在java代码和图示,它们是全世界通用的,一定程度上弥补了这一点。


如果想了解一下算法,当做入门读物。

这本书已经非常好了,很值得推荐。