数据结构和算法分类 - 详解

数据结构与算法的分类需兼顾逻辑特性、应用场景、核心目标三大维度,以下是系统性的分类框架,既覆盖基础理论,也贴合工程实践:

一、数据结构分类(按「逻辑结构+存储结构+核心功能」划分)

数据结构的核心是「组织素材的方式」,分类需区分「逻辑上如何关联」和「物理上如何存储」,再结合机制场景细化:

1. 按逻辑结构分类(数据元素间的关联关系)
类别定义核心特点典型例子
线性结构数据元素按「线性顺序」排列,除首尾外每个元素仅有一个前驱和一个后继一对一关系,顺序访问高效数组、链表、栈、队列、字符串
非线性结构数据元素间为「一对多」或「多对多」关系可分支/网状关联,查找/关联高效树、图、堆、哈希表
2. 按存储结构分类(数据在内存中的物理存储方式)
类别定义核心特点对应逻辑结构
顺序存储结构数据元素连续存储在内存的「连续地址空间」随机访问O(1),插入删除O(n)数组、栈(顺序实现)、队列(顺序构建)
链式存储结构数据元素分散存储,借助「指针/引用」关联前驱/后继元素插入删除O(1),随机访问O(n)链表、树(链式完成)、图(邻接表)
索引存储结构额外建立「索引表」,记录数据元素的关键字与存储地址映射查找O(1)~O(logn),额外空间开销数据库索引、哈希表(索引+数组)
散列存储结构(哈希)直接通过「哈希函数」计算数据元素的存储地址,无需顺序/指针关联查找/插入/删除均O(1)(理想)哈希表、布隆过滤器
3. 按核心功能分类(工程中常用的场景化划分)
类别核心用途典型结构
线性存储结构按顺序/先进先出/后进先出管理数据数组、链表、栈、队列、双端队列
树形结构层级化组织素材(一对多),用于排序、搜索、分层遍历二叉树、二叉搜索树(BST)、红黑树、B树/B+树、堆、Trie树
图形结构网状组织数据(多对多),用于描述关联关系(路径、依赖等)有向图、无向图、加权图、邻接矩阵/邻接表
映射结构键值对关联,用于敏捷查找/映射(核心是「键→值」的高效映射)哈希表、跳表、有序映射(TreeMap)
集合结构存储不重复元素,支持交集、并集、差集等操作哈希集合(HashSet)、有序集合(TreeSet)、布隆过滤器

二、算法分类(按「核心目标+解题思路+应用场景」划分)

算法的核心是「解决问题的步骤」,分类需突出「时间复杂度、空间复杂度、解题逻辑」的差异:

1. 按核心目标分类(优化方向)
类别核心目标典型算法
查找算法从资料集合中快速找到目标元素二分查找、哈希查找、二叉搜索树查找、跳表查找
排序算法将数据集合按指定顺序(升序/降序)排列冒泡排序、飞快排序、归并排序、堆排序、基数排序
搜索算法在图/树中寻找「路径/目标节点」(比查找更繁琐,涉及状态遍历)深度优先搜索(DFS)、广度优先搜索(BFS)、Dijkstra算法、A*算法
动态规划算法分解复杂问题为「重叠子问题」,借助缓存子问题结果避免重复计算斐波那契数列、最长公共子序列(LCS)、背包疑问、最短路径(Floyd-Warshall)
贪心算法每一步选择「局部最优解」,最终逼近全局最优解(需满足贪心选择性质)哈夫曼编码、最小生成树(Prim/Kruskal)、活动选择问题
分治算法将挑战分解为「独立子疑问」,递归求解后合并结果归并排序、敏捷排序、大数乘法(Karatsuba)
回溯算法按「深度优先」尝试所有可能解,不满足条件时回溯(暴力搜索的优化)全排列、组合总和、N皇后问题、子集疑问
字符串算法处理字符串匹配、编辑、转换等问题KMP算法、BM算法、Rabin-Karp算法、字符串编辑距离
图算法处理图的遍历、连通性、路径、生成树等问题拓扑排序、并查集(Union-Find)、最小生成树、最短路径
2. 按时间复杂度分类(效率等级)
复杂度级别名称特点(n为数据规模)典型算法
O(1)常数时间算法效率最高,与n无关哈希表查找/插入、数组随机访问
O(logn)对数时间算法效率极高,n增大时增长缓慢二分查找、红黑树插入/查找
O(n)线性时间算法效率较高,与n成正比线性查找、计数排序、BFS(图节点遍历)
O(nlogn)线性对数时间算法高效排序的主流复杂度快速排序、归并排序、堆排序
O(n²)平方时间算法效率一般,n较大时性能下降冒泡排序、插入排序、简单回溯
O(2ⁿ) / O(n!)指数/阶乘时间算法效率极低,仅适用于小规模材料暴力全排列、TSP问题(暴力解)
3. 按空间复杂度分类(内存开销)
类别特点典型算法
原地算法(O(1)空间)仅使用常数额外空间,不依赖额外数据结构冒泡排序、插入排序、堆排序(in-place实现)
线性空间算法(O(n))需额外使用与n成正比的空间归并排序、线性表复制、BFS(队列存储节点)
递归空间算法(O(logn)~O(n))递归调用栈占用空间(与递归深度相关)快速排序(递归栈O(logn))、DFS(递归栈O(n))

三、核心关联:数据结构与算法的绑定关系

很多算法是为特定数据结构设计的,二者不可分割:

  • 数组/链表 → 线性查找、冒泡排序、插入排序
  • 二叉搜索树/红黑树 → 二叉查找、中序遍历排序
  • 哈希表 → 哈希查找、哈希集合操作
  • 图 → DFS/BFS、Dijkstra算法、并查集
  • 堆 → 堆排序、优先队列(TopK问题)
  • 字符串 → KMP、Rabin-Karp匹配算法

总结

  • 「组织数据」,分类围绕「逻辑关联、物理存储、功能场景」;就是数据结构的核心
  • 算法的核心是「解决问题」,分类围绕「优化目标、效率等级、解题思路」;
  • 工程实践中,需根据疑问场景选择「适配的数据结构+高效的算法」(如:快速查找用哈希表,有序查找用二叉搜索树,大规模排序用归并/堆排序)。
posted @ 2026-02-04 16:02  yangykaifa  阅读(0)  评论(0)    收藏  举报