数据结构和算法-开篇记

简述

程序员的长久发展,离不开内功,对于高手来说,技术和框架的应用是一种招式,而数据结构和算法是内功,修炼到绝顶时无招胜有招。工作将近两年的时间里,工作的时间加上业余时间,我几乎已经接触并使用过市面上很多常用的框架和技术,从前端的Ajax/JQ,到Android,再到后端Java的SSM、Spring Boot/Spring Cloud,最后到服务端的Linux、Shell、Nginx、Redis等。随着水平的提升和眼界的扩展,我越来越迫切的感受到数据结构、算法和源码层面的知识匮乏,所以计划将数据结构和算法完整而系统地学习一遍。

学习资料和方法

学习的主要参考资料如下(暂定):

  • 极客时间课程《数据结构和算法之美》

  • 《算法》(第四版)红皮;

  • 《数据结构和算法:Java语言描述》。

其中,以极客时间课程为引导,第二和第三项为参考和深入;

主要的数据结构有:

数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树;

主要算法有:

递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

学习方法:

原理学习+实战演练+刷题;

时间和主要内容规划:

第一周:大O表示法,时间复杂度和空间复杂度分析;

第二周:数组、链表、栈、队列;

第三周:递归、排序;

第四周:二分查找、跳表;

第五周:散列表、哈希算法;

第六周:二叉树、红黑树、递归树;

第七周:堆和图,堆排序图的查找;

第八周:字符串匹配;

第九周:Trie树,AC自动机,贪心算法;

第十周:回溯算法,动态规划;

第十一周:拓扑排序、最短路径、位图;

第十二周:概率统计、向量空间、B+树;

第十三周:搜索、索引、并行算法;

第十四周:算法实战解析。

每周末写一遍算法学习笔记,并且手写当周学习的算法和数据结构,希望百日能通关数据结构和算法大关。

坚持原创、技术分享。请作者喝杯茶吧!