- 无需先学数据结构的算法类型像线性枚举、基础排序(选择、冒泡、插入、计数)、前缀和、双指针等算法,主要在数组上操作。而数组作为基础语法的一部分,大部分学习者在学习编程基础时已掌握,因此学习这类算法前无需专门学习数据结构。- 需要先学数据结构的算法类型进阶算法大多依赖数据结构:- 堆排序依赖二叉堆;- 图论算法(Dijkstra、Prim、Bellman - Ford、Floyd等)依赖邻接表、邻接矩阵、链式前向星;- 深度优先搜索依赖栈;- 广度优先搜索依赖队列、哈希表;- 动态规划依赖数组、哈希表等。此外,递归的本质是树的构建过程,树是经典数据结构,学习树结构能让递归的理解事半功倍。算法学习路线- 基础数据结构:顺序表、单向链表、栈、队列、串、树、二叉树、二叉搜索树、哈希表、邻接表、图邻接矩阵等。- 基础算法:线性枚举、模拟递推、各类排序(选择、冒泡、插入、计数、归并、快速、桶排、基排、堆排序)、哈希算法、贪心算法、前缀和、双指针、滑动窗口、二分查找、多种图论算法(Dijkstra、Prim、深搜、广搜、Bellman - Ford、Floyd、Dijkstra + Heap、SPFA、拓扑排序)、动态规划等。- 进阶数据结构:高精度、双向链表、链式前向星、二叉堆、单调栈、单调队列、并查集、离散化、树状数组、字典树、线段树、平衡二叉树等。- 进阶算法:线性DP、记忆化搜索、各类背包DP(01背包、完全背包、多重背包、分组背包、依赖背包、树形DP)、数位DP、状压DP、区间DP、字符串哈希、manacher、LCA、二分匹配、强连通分量等。