为什么要写这个系列博客?
第一,从自身角度来说,作为一名即将毕业的计算机专业本科生,我深深感受到了自己在基础方面的不足,尤其是算法与数据结构。
这种感受伴随了我的整个大学生涯,由于我的学校在计算机学科并不是传统的强校,身边的同学(包括我自己)都有一种莫名的自卑感,觉得低人一等。这种感受在我大三实习期间更为明显,业务代码写到一半,要经常到网上找资料“现学现卖”。
第二,算法与数据结构作为计算机科学最核心的课程之一,不仅可以很好的锻炼个人思维能力,也对学习者的学术或职业生涯有深远的影响。算法功底好的人,运气不会太差。
鉴于以上两点,我决定静下心来,把《算法导论》完整的学习一遍。之所以选择写系列博客,是因为一来可以把控自己的学习进度,二来可以供以后复习查阅,一举两得。
这个系列主要包含什么内容?
本想通读《算法导论》,并记录笔记,但考虑到读书的效率不如看视频高,所以决定以观看网易公开课中麻省理工大学开放的“算法导论”课程视频为主,参考《算法导论》书籍等方式进行学习。博客将同时包含理论讲解和代码实现(Java)。参考视频课程目录,初步拟定提纲如下:
- 课程简介及算法分析
- 渐近符号,递归及解法
- 分治法
- 快排及随机化算法
- 线性时间排序
- 顺序统计、中值
- 哈希表
- 全域哈希和完全哈希
- 二叉搜索树
- 平衡搜索树
- 扩充的数据结构、动态有序统计和区间树
- 跳跃表
- 平摊分析,表的