我想写一本通俗易懂的算法书很久了,因为对于多数人而言,“算法”给他的第一印象就是很难懂,其实我也是这样。还记得我第一次学习图论的“割点割边”算法时,看过不下于四五本书,其中不乏一些算法经典书籍,还百度了一堆材料,才勉强将其看懂并实现成代码。其实这个算法并不难,核心代码不超过20行,但是很多算法书都是草草叙述,不同的书籍给出的参考代码也是五花八门,有的甚至都不稀罕给你代码,这大大增加了学习的难度。我是花了整整一个晚上才搞定的,当然这其中不排除智商因素。第二印象就是算法是枯燥无趣的,并且好像没什么作用。其实在我们的日常生活之中到处都可见到算法的影子,只不过它通常隐匿在事物的背后,不太容易被发现。但是它每天都在默默地为我们服务着。在本书中我将带你一步步揭开算法的奥秘,带它走近你的身边。

由于算法的内容确实是太多了,要想全部写清楚恐怕几本书都不够,本书将介绍一些最常用的算法。此外算法的实现通常需要依附一些数据结构,因此在必要的时候对于需要用到的数据结构我也会进行讲解。本书中涉及的数据结构有栈、队列、树、并查集、堆和图等;算法有各种排序、枚举、深度和广度优先搜索、图上的遍历,当然还有图论中不可以缺少的四种最短路径算法、两种最小生成树算法、割点与割边算法、二分图的最大匹配算法等。

尽管我不敢保证我写的算法你一定可以看懂(但凭着一股强大的自信,我认为初中以上文化程度的应该没问题^_^),但我会以一个故事或者一个你在生活中可能遇到的问题开始对一个算法进行讲解,并尽量用通俗易懂的语言配合有趣的插图让你在阅读本书的时候更像是在品读一篇篇轻松的短篇小说或是在玩一把趣味解谜游戏,在轻松愉悦中掌握算法精髓,感受算法之美。

目录