非常幸运,在2017年的3月中旬遇见《算法图解》。这是一本有趣的算法书。试读完第一章节之后,我立即入手了电子书,继续阅读。任平时多喜欢读纸质书,那一刻也无法容忍最少的等待。

在一周的阅读过程中,共提交了3处勘误。其中1处已经审核,其余2处待审核。使用纸张8张(A4),编码累计6小时。

掌握了10种基础算法:

  • 二分法查找
  • 选择排序
  • 递归
  • 快速排序
  • 散列表
  • 广度优先搜索
  • 狄克斯特拉算法
  • 贪婪算法
  • 动态规划
  • K最近邻算法

了解了10种进阶算法及适用场景。接下来将记录阅读《算法图解》过程中的一些细节。

一、工欲善其事,必先利其器

解锁搬运代码的小男孩的读书姿势,正式阅读前需准备,如下技能和准备:

  • 《 算法图解》1本(中/英文,纸/电不限);
  • 10张白纸(或1本笔记本)和铅笔(水笔)1支;
  • 装有Python开发环境的电脑1台;
  • 理解对数、次方、平方根的计算。

二、学而不思则罔,思而不学则殆

凡写程序者,谁还没遇到几段抄书而运行不了的代码?凡读书者,都信实践出真知。所以,你应该懂了,我就不讲了。

学习是一件快乐的事情,所以我喜欢在阅读的过程的去极力的思考。自己不去思考而只是浏览书上的内容,其实质犹如竹篮打水。在阅读《算法图解》的时候,自己会拿着纸盒笔理出自己的思路,然后再去对比书上的解题思路。明白了作者的用意之后,接着会花几分钟整理一下,然后在IDE中去编写程序验证想法。可能是电子书排版的问题,在写一些程序的时候要注意某些代码的缩进。要不然程序会运行出意想不到的结果,从而怀疑写了一次假程序。

当然在读这本书的过程中最有意思的事情,应该是当自己的理解和书上的图对应不起来。黑人问号脸,怎么回事?感觉脑细胞又要死亡一个军团,经过2~3次的复查之后,可以确认应该是图上写错了。突然有了病树前头万木春的喜悦,要不然对于一个有强迫症的患者来说,这简直就是痛苦的折磨。

虽然在阅读过程中有一点小插曲,不过并不影响我对这本书的喜爱之情。4月下旬的时候,自己还会再细致的读一遍《算法图解》,古人云“温故而知新”。

PS:希望能够有更多的小伙伴喜欢《算法图解》,期待与你一起讨论算法。对于如何思考算法,对于初学者来说可以看哈佛大学的CS50课程,http://cs50.tv/2016/fall/,这门课程是教学生如何思考算法及如何有效的解决问题的。还不错,我就是学习这个课程接触算法的。