数据结构和算法学习规划 为什么要学? 算法是基本功,有了基本功之后,学习区块链、人工智能就非常快了。 新技术的迭代非常快,但是核心和本质的东西是不变。 基础知识就像一座大楼的地基,它决定了我们的技术高度。基础知识就是操作系统、计算机网络、编译原理和数据结构和算法等等。 大厂面试都在考算法,相比短期的能力,他们更看重你的长期潜力。 掌握了数据结构和算法,更有利于阅读框架源码和背后的设计思想。在工作中也能写出性能更优的代码。 基础架构研发工程师,写出达到开源水平的框架才是你的目标。只会CRUD,写凑合能用的代码,陷入35岁瓶颈,很容易被后浪淘汰。 掌握了数据结构与算法,你看待问题的深度,解决问题的角度就会完全不一样。算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。 长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。 如何学习? 算法并不可怕,关键是找到好的系统和高效的学习方法,抓中重点。 数据结构就是一组数据的存储结构,算法就是操作数据的一组方法。就像图书馆一样,书籍是数据,算法是如何高效的找到需要的书。 数据结构是为算法服务的,算法要作用在特定的数据结构之上。 学习算法要学习它的“来历”、“自身的特点”、“适合解决的问题”以及“实际的应用场景”。了解每个算法“是什么”,思考“为什么”,遇到问题就知道“怎么做”。 边学边练,适度刷题。 多问、多思考。 打怪升级学习法,设定一个切实可行的目标。 学习知识的过程是反复迭代、不断沉淀的过程。 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树。 10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 学习规划 复杂的分析【第一阶段 M 10分】 时间复杂度 空间复杂度 数据结构 线性表【第一阶段 E 8分】 数组 链表【第一阶段 M 9分】 栈 队列 散列表 树 图 堆 算法 排序【第一阶段 E 7分】 O(n^2) 冒泡排序 插入排序 选择排序 希尔排序 O(nlogn) 归并排序 快速排序 堆排序 O(n) 计数排序 基数排序 桶排序 搜索 深度优先 广度优先 A*启发式搜索 查找【第一阶段 E 7分】 线性查找 树结构查找 散列表查找 字符串匹配 朴素 KMP Robin-Karp Boyer-Moore AC自动机 Trie 后缀数组 基本算法思想 贪心算法 分治算法 动态规划 回溯算法 枚举算法 其他 数论 计算几何 概率分析 并查集 拓扑网络 矩阵运算 线性规划