开篇
该篇为整个系列的最开篇,内容主要是对算法导论进行划重点,算法导论这本书是国外的教科书,内容很多很啰嗦,并且也不完全是由浅入深这个顺序来的。虽然被奉为圣经级别的书籍,但是刚拿到手却很难上手,因此在最开篇我给大家把每一章的要求列一下,更好上手。
重点程度分类
我将整个内容分为如下几种:
- 知道:最简单的级别,仅需要知道有这种算法,解决了哪种问题即可
- 了解:在知道之上,需要了解算法的复杂度,以及实现难度等细节
- 熟悉:需要熟悉算法的细节,通过一些额外的帮助可以实现这种算法
- 掌握:可以直接写出算法,并且可以针对相关问题熟练建模,并且运用
章节要求划分
第一部分 基础知识
其中重点章节为第2章和第4章,要求为熟悉,其余章节要求为了解,其中:重点需要知道时间复杂度以及如何计算时间复杂度
第二部分 排序和顺序统计量
其中重点章节为第6章和第7章,要求为掌握,第8章相对简单,偶尔可能会遇到,要求为熟悉,第9章需要了解,其中:堆在很多算法中都是一种非常好的优化手段;而快速排序则是几乎所有语言内置排序算法的选择
第三部分 数据结构
其中第10章是重点章节,需要掌握,第11章和12章虽然比较难,但是最好是熟悉,第13章需要了解,第14章仅需要知道,其中:大部分语言都有本章所对应的的数据结构,以Java为例,HashMap是散列表实现、LinkedTreeMap是红黑树实现
第四部分 高级设计和分析技术
其中第15章和第16章是重点章节,需要熟悉,第17章需要知道,其中:动态规划是面试中很容易出现的问题,而且非常多变,如果需要面试这一章就需要更好的掌握,同时要刷一些题
第五部分 高级数据结构
这一部分的内容都比较难,第21章需要了解,其他仅需要知道,其中:B树是很多数据库的底层index实现,如果深入数据库的话应该要看;第21章其实比较简单,中文叫并查集,网上有很多相关内容,而且平时也可能会用到
第六部分 图算法
重点是第22章,需要掌握,第26章仅需要知道,其余为了解,但是如果参与了图相关的开发,比如地图类的,还是推荐都掌握比较好,其中:其实这一章的问题都很有趣,并且对应了很多现实问题,但是难度也相对较大,有时间可以多了解多练习,对建模水平会有很大提高
第七部分 算法问题选编
这里重点是第31章和第32章,需要了解,其他仅需要知道,其中:RSA加密最好看一些网络上的内容,因为应用非常广泛,比如https,ssh都有应用;另外有限状态自动机是正则表达式的实现方式
结语
最近我会根据上面的重点,陆续出几篇关于算法的博客。当然算法有很多很多,尤其是关于机器学习的在算法导论里并没有介绍,但是机器学习最近也是非常火的,包括我自己也认为机器学习才是未来的爆发点,推荐Coursera上吴恩达的课程Machine Learning。
转载请注明来自于 贺云飞的简书
这个系列的博客可以作为《算法导论》的简单概要,或者说重点介绍,希望给正在学算法的同学一点参考,顺带感谢一下赖赖给我的动力,这里是传送门:Spring step by step