1. 线性结构
1.1 数组与矩阵
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 数组 | Array | 相同类型元素的有序集合,连续内存存储。 | ⭐ |
| 下标 / 索引 | Index | 访问数组元素的编号,通常从0开始。 | ⭐ |
| 一维数组 | One-dimensional Array | 线性顺序存储的一维结构。 | |
| 多维数组 | Multi-dimensional Array | 二维及以上数组,如矩阵。 | |
| 矩阵 | Matrix | 二维数字网格,用于线性代数。 | ⭐ |
| 稀疏矩阵 | Sparse Matrix | 多数元素为零的矩阵。 | |
| 对称矩阵 | Symmetric Matrix | 方阵中 Aij = Aji。 | |
| 三角矩阵 | Triangular Matrix | 上三角或下三角存值,其余为0。 | |
| 对角矩阵 | Diagonal Matrix | 非主对角线元素均为0。 | |
| 行优先 | Row-major Order | 按行顺序存储多维数组。 | |
| 列优先 | Column-major Order | 按列顺序存储多维数组。 |
1.2 链表
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 链表 | Linked List | 由节点链接而成的线性结构,非连续存储。 | ⭐ |
| 节点 | Node | 存数据和指针的基本单元。 | ⭐ |
| 单链表 | Singly Linked List | 每个节点指向下一个节点。 | ⭐ |
| 双向链表 | Doubly Linked List | 节点有前驱和后继两个指针。 | ⭐ |
| 循环链表 | Circular Linked List | 尾节点指向头节点形成环。 | |
| 头指针 | Head Pointer | 指向链表第一个节点的指针。 | |
| 头节点 | Head Node | 附加的辅助节点,简化操作。 | |
| 尾指针 | Tail Pointer | 指向链表最后一个节点的指针。 | |
| 哨兵 | Sentinel Node | 用于简化边界条件的哑元节点。 | |
| 静态链表 | Static Linked List | 用数组实现链表(游标代替指针)。 |
1.3 栈
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 栈 | Stack | 后进先出(LIFO)的线性结构。 | ⭐ |
| 压栈 / 入栈 | Push | 将元素放入栈顶。 | ⭐ |
| 弹栈 / 出栈 | Pop | 移除并返回栈顶元素。 | ⭐ |
| 栈顶 | Top | 最后入栈的元素位置。 | |
| 栈底 | Bottom | 最先入栈的元素位置。 | |
| 栈满 | Stack Overflow / Full | 栈空间已满,无法入栈。 | |
| 栈空 | Stack Empty | 栈中无元素。 | |
| 后缀表达式 | Postfix Expression(逆波兰式) | 运算符置于操作数之后。 | ⭐ |
| 中缀表达式 | Infix Expression | 日常算术表达式。 | |
| 括号匹配 | Parenthesis Matching | 使用栈检查括号是否成对。 |
1.4 队列
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 队列 | Queue | 先进先出(FIFO)的线性结构。 | ⭐ |
| 入队 | Enqueue | 将元素加入队尾。 | ⭐ |
| 出队 | Dequeue | 移除并返回队头元素。 | ⭐ |
| 队头 | Front / Head | 第一个将被取出的元素。 | |
| 队尾 | Rear / Tail | 最后一个入队的元素。 | |
| 循环队列 | Circular Queue | 将顺序队列首尾相接,解决假溢出。 | ⭐ |
| 双端队列 | Deque (Double-ended Queue) | 两端都可入队、出队。 | ⭐ |
| 输出受限双端队列 | Output-restricted Deque | 删除只能在一端进行。 | |
| 输入受限双端队列 | Input-restricted Deque | 插入只能在一端进行。 | |
| 优先队列 | Priority Queue | 元素带有优先级,每次出队最高优先级。 | ⭐ |
2. 树形结构
2.1 树的基本概念
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 树 | Tree | 具有层次关系的非线性结构。 | ⭐ |
| 节点 | Node | 树中的基本元素。 | ⭐ |
| 根节点 | Root | 树的顶层节点,无父节点。 | ⭐ |
| 叶子节点 | Leaf Node | 无子节点的终端节点。 | ⭐ |
| 父节点 | Parent Node | 直接连接的上层节点。 | |
| 子节点 | Child Node | 直接连接的下层节点。 | |
| 兄弟节点 | Sibling Nodes | 拥有同一父节点的节点。 | |
| 祖先节点 | Ancestor | 从根到当前节点路径上所有节点。 | |
| 子孙节点 | Descendant | 当前节点子树中的所有节点。 | |
| 度 | Degree(节点的度/树的度) | 节点的子节点个数;树中最大度数。 | ⭐ |
| 层次 | Level | 根为第1层(或第0层),向下递增。 | |
| 深度 | Depth | 节点到根的唯一路径边数。 | |
| 高度 | Height | 节点到最深叶子的最长路径边数;树的高度是根的高度。 | ⭐ |
2.2 二叉树
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 二叉树 | Binary Tree | 每个节点最多有两个子节点。 | ⭐ |
| 满二叉树 | Full Binary Tree | 所有节点都有0或2个子节点。 | |
| 完全二叉树 | Complete Binary Tree | 除最后一层外每层都填满,最后一层从左向右填充。 | ⭐ |
| 二叉搜索树(BST) | Binary Search Tree | 左子树值 < 根值 < 右子树值。 | ⭐ |
| 平衡二叉树 | Balanced Binary Tree(AVL 树) | 任意节点左右子树高度差不超过1。 | ⭐ |
| 红黑树 | Red-Black Tree | 通过着色约束保持近似平衡的BST。 | ⭐ |
| 哈夫曼树 | Huffman Tree | 带权路径长度最小的二叉树,用于压缩。 | ⭐ |
| 二叉线索树 | Threaded Binary Tree | 利用空指针充当线索,方便遍历。 | |
| 先序遍历 | Preorder Traversal (Root-Left-Right) | 根 → 左 → 右。 | ⭐ |
| 中序遍历 | Inorder Traversal (Left-Root-Right) | 左 → 根 → 右。 | ⭐ |
| 后序遍历 | Postorder Traversal (Left-Right-Root) | 左 → 右 → 根。 | ⭐ |
| 层序遍历 | Level-order Traversal | 按层次从上到下访问。 | ⭐ |
2.3 堆
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 堆 | Heap | 一种特殊的完全二叉树,满足根与子节点的偏序关系。 | ⭐ |
| 最大堆 | Max-Heap | 父节点值 ≥ 子节点值。 | ⭐ |
| 最小堆 | Min-Heap | 父节点值 ≤ 子节点值。 | ⭐ |
| 堆化 | Heapify | 将一个无序数组调整为堆结构。 | |
| 上滤 / 下滤 | Sift Up / Sift Down | 堆调整中的上升、下降操作。 |
2.4 多路查找树
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| B 树 | B-Tree | 多路自平衡搜索树,广泛用于数据库和文件系统。 | ⭐ |
| B+ 树 | B+ Tree | B 树的变种,所有数据只存叶子节点,叶子节点形成有序链表。 | ⭐ |
| B* 树 | B* Tree | B+ 树变种,非叶子节点也有部分数据,空间利用率更高。 | |
| 2-3 树 | 2-3 Tree | 节点可存 1 或 2 个关键字,子节点数相应为 2 或 3。 | |
| 2-3-4 树 | 2-3-4 Tree | 节点可存 1~3 个关键字,子节点数相应为 2~4。 | |
| 键 / 关键字 | Key | 用于查找树节点的值。 | ⭐ |
| 阶 | Order(B 树阶数) | 控制节点最大子节点数,决定分支因子。 |
2.5 其他树结构
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 字典树 / 前缀树 | Trie / Prefix Tree | 用字符串公共前缀压缩存储,支持快速查找。 | ⭐ |
| 线段树 | Segment Tree | 用于区间查询和更新。 | |
| 树状数组 | Binary Indexed Tree (BIT) / Fenwick Tree | 支持前缀和快速更新与查询。 | |
| 并查集 | Disjoint Set Union / Union-Find | 用于处理集合的合并与查找。 | ⭐ |
| 森林 | Forest | 多棵树的集合。 | |
| 表达式树 | Expression Tree | 叶子存操作数,内部节点存运算符。 |
3. 图形结构
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 图 | Graph | 由顶点和边组成的非线性结构。 | ⭐ |
| 顶点 / 节点 | Vertex (复数 Vertices) | 图中的基本元素。 | ⭐ |
| 边 | Edge | 连接两个顶点的线段。 | ⭐ |
| 有向图 | Directed Graph (Digraph) | 边有方向。 | ⭐ |
| 无向图 | Undirected Graph | 边无方向。 | ⭐ |
| 权 / 权重 | Weight | 边上的数值,表示代价、距离等。 | ⭐ |
| 度 | Degree | 无向图中顶点的边数。 | |
| 入度 | In-degree | 有向图中指向该顶点的边数。 | |
| 出度 | Out-degree | 有向图中从该顶点出发的边数。 | |
| 邻接点 | Adjacent Vertex | 与该顶点直接相连的顶点。 | |
| 路径 | Path | 顶点序列,相邻顶点间有边。 | ⭐ |
| 简单路径 | Simple Path | 路径中顶点不重复。 | |
| 回路 / 环 | Cycle / Circuit | 起点与终点相同的路径。 | ⭐ |
| 连通图 | Connected Graph | 无向图中任意两顶点都有路径。 | ⭐ |
| 强连通图 | Strongly Connected Graph | 有向图中任意两顶点互相可达。 | |
| 连通分量 | Connected Component | 无向图中极大连通子图。 | ⭐ |
| 强连通分量 | Strongly Connected Component | 有向图中极大强连通子图。 | |
| 生成树 | Spanning Tree | 包含图中所有顶点的极小连通子图(边数最少)。 | ⭐ |
| 最小生成树 | Minimum Spanning Tree (MST) | 边权之和最小的生成树。 | ⭐ |
| 最短路径 | Shortest Path | 两顶点间权重和最小的路径。 | ⭐ |
| 拓扑排序 | Topological Sort | 有向无环图的顶点线性排序。 | ⭐ |
| 关键路径 | Critical Path | 工程网络中决定总工期的路径。 | |
| 邻接矩阵 | Adjacency Matrix | 用二维数组存储图的顶点关系。 | ⭐ |
| 邻接表 | Adjacency List | 用链表/数组存储每个顶点的邻接点。 | ⭐ |
| 有向无环图 | Directed Acyclic Graph (DAG) | 无环的有向图。 | ⭐ |
| 二分图 / 偶图 | Bipartite Graph | 顶点可分成两个集合,边只连接不同集合的顶点。 | |
| 欧拉路径 | Eulerian Path | 恰好经过每条边一次的路径。 | |
| 哈密顿路径 | Hamiltonian Path | 恰好经过每个顶点一次的路径。 |
4. 查找结构
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 查找 / 搜索 | Search | 在数据集合中找到特定元素。 | ⭐ |
| 平均查找长度 | Average Search Length (ASL) | 查找过程中元素比较次数的期望值。 | |
| 顺序查找 | Sequential Search / Linear Search | 从一端开始逐个比较查找。 | ⭐ |
| 二分查找 | Binary Search | 要求有序,每次折半比较。 | ⭐ |
| 分块查找 / 索引顺序查找 | Block Search / Indexed Sequential Search | 分块并建立索引,块内无序。 | |
| 哈希表 / 散列表 | Hash Table | 通过哈希函数直接映射到存储位置。 | ⭐ |
| 散列函数 | Hash Function | 将关键字映射为地址的函数。 | ⭐ |
| 冲突 / 碰撞 | Collision | 不同关键字映射到同一地址。 | ⭐ |
| 开放定址法 | Open Addressing | 发生冲突时探测下一个空位。 | |
| 线性探测 | Linear Probing | 依次探测下一个位置。 | |
| 二次探测 | Quadratic Probing | 以平方步长探测。 | |
| 链地址法 / 拉链法 | Separate Chaining | 将所有冲突元素存入链表或树。 | ⭐ |
| 再散列法 | Rehashing | 构造多个散列函数,冲突时换一个。 | |
| 装填因子 | Load Factor (α) | 哈希表中已存元素个数与表长的比值。 | ⭐ |
| 完美哈希 | Perfect Hashing | 无冲突的哈希函数。 | |
| 动态哈希 | Dynamic Hashing (Extendible Hashing / Linear Hashing) | 表长可动态变化。 |
5. 排序算法
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 排序 | Sorting | 使记录序列按关键字有序排列。 | ⭐ |
| 稳定性 | Stability | 相等关键字元素的相对次序不变。 | ⭐ |
| 内部排序 / 外部排序 | Internal / External Sorting | 数据能否全部装入内存。 | |
| 时间复杂度 | Time Complexity | 算法执行时间随数据规模的增长趋势。 | ⭐ |
| 空间复杂度 | Space Complexity | 算法所需额外存储空间。 | |
| 比较排序 | Comparison Sort | 仅通过比较关键字来完成排序。 | |
| 交换排序 | Exchange Sort | 通过交换元素位置实现排序。 | |
| 冒泡排序 | Bubble Sort | 反复交换相邻逆序对,稳定,O(n²)。 | ⭐ |
| 快速排序 | Quick Sort | 分治法,选基准分区,平均 O(n log n)。 | ⭐ |
| 插入排序 | Insertion Sort | 将元素逐个插入已排好的子序列中。 | ⭐ |
| 希尔排序 | Shell Sort | 改进的插入排序,按增量分组。 | |
| 选择排序 | Selection Sort | 每次选最值放到已排序列末尾。 | ⭐ |
| 堆排序 | Heap Sort | 利用最大/最小堆实现,平均 O(n log n)。 | ⭐ |
| 归并排序 | Merge Sort | 分治法,递归划分再合并,稳定 O(n log n)。 | ⭐ |
| 基数排序 | Radix Sort | 按关键字的各位依次分配收集。 | |
| 桶排序 | Bucket Sort | 将数据分入若干桶内排序再合并。 | |
| 计数排序 | Counting Sort | 适用于范围有限的整数,非比较排序。 | |
| 锦标赛排序 | Tournament Sort | 树形选择排序。 | |
| 决策树模型 | Decision Tree Model | 用树形结构表示比较排序的可能过程。 |
6. 算法设计常用术语
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 分治法 | Divide and Conquer | 将问题分解为子问题,递归求解再合并。 | ⭐ |
| 动态规划 | Dynamic Programming (DP) | 保存子问题解,避免重复计算。 | ⭐ |
| 贪心算法 | Greedy Algorithm | 每步选择当前局部最优解。 | ⭐ |
| 回溯法 | Backtracking | 试探所有可能,遇到死路就回退。 | ⭐ |
| 分支限界法 | Branch and Bound | 用限界函数剪枝,常用于组合优化。 | |
| 递归 | Recursion | 函数直接或间接调用自身。 | ⭐ |
| 迭代 | Iteration | 用循环重复执行代码块。 | |
| 穷举搜索 | Exhaustive Search / Brute Force | 列举所有可能找出解。 | |
| 状态空间 | State Space | 由全部可能状态组成的树或图。 | |
| 剪枝 | Pruning | 在搜索中提前终止不必要的路径。 | ⭐ |
| 时间复杂度 | Time Complexity | 常用大 O 记号表达。 | ⭐ |
| 空间复杂度 | Space Complexity | 算法所需内存。 | |
| 最坏情况 | Worst Case | 对算法最不利的输入情形。 | ⭐ |
| 平均情况 | Average Case | 输入随机分布的期望性能。 | ⭐ |
| 最好情况 | Best Case | 最有利的输入情形。 | |
| 原地算法 | In-place Algorithm | 辅助空间为 O(1) 的算法。 | ⭐ |
| 稳定算法 | Stable Algorithm | 相等元素保持原有顺序。 |
7. 其他重要术语
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 抽象数据类型 | Abstract Data Type (ADT) | 定义数据对象及其上操作,不关心实现。 | ⭐ |
| 数据元素 | Data Element | 数据的基本单位,可包含多个数据项。 | |
| 数据项 | Data Item | 构成数据元素的最小不可分单位。 | |
| 关键字 | Key | 数据元素中用于标识或排序的数据项。 | ⭐ |
| 主关键字 | Primary Key | 唯一标识元素的关键字。 | |
| 次关键字 | Secondary Key | 可能不唯一的关键字。 | |
| 顺序存储结构 | Sequential Storage Structure | 用连续内存单元存储(如数组)。 | |
| 链式存储结构 | Linked Storage Structure | 用指针链接分散的存储单元。 | ⭐ |
| 索引存储 | Indexed Storage | 建立附加索引表提高查找速度。 | |
| 散列存储 | Hash Storage (Hashing) | 通过哈希函数确定存储地址。 | |
| 指针 / 引用 | Pointer / Reference | 存储变量地址的变量。 | |
| 空指针 | Null Pointer / Nil | 不指向任何有效对象。 | |
| 头指针 | Head Pointer | 指向表/结构起始位置的指针。 | |
| 尾指针 | Tail Pointer | 指向表/结构末尾位置的指针。 | |
| 哨兵 | Sentinel | 用于简化循环边界判断的辅助值。 |
8. 补充术语
8.1 线性结构补充
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 线性表 | Linear List | 零个或多个数据元素的有限序列,是栈、队列、数组等结构的抽象总称。 | ⭐ |
| 顺序表 | Sequential List / Sequence List | 用一组地址连续的存储单元依次存储线性表的数据元素。 | ⭐ |
| 动态数组 | Dynamic Array / Resizable Array | 大小可变的数组,底层自动扩容(如 Java 的 ArrayList、C++ 的 vector)。 |
⭐ |
| 向量 | Vector | 一维动态数组;也指线性代数中的有向线段。 | |
| 跳跃表 / 跳表 | Skip List | 在有序链表上增加多级索引实现快速查找,期望复杂度 O(log n)。 | ⭐ |
| 自组织链表 | Self-organizing List | 根据访问频率动态调整元素位置(如移至前端)的链表。 | |
| 异或链表 | XOR Linked List | 用单个指针字段存储前后节点地址的 XOR,节省空间。 | |
| 块状链表 | Unrolled Linked List / Block List | 每个节点存储多个元素的链表,兼顾数组缓存友好与链表动态性。 | |
| 共享栈 | Shared Stack / Two Stacks | 两个栈共享同一块数组空间,向中间生长。 | |
| 单调栈 | Monotonic Stack | 栈内元素保持单调递增或递减,常用于解决 Next Greater Element 等问题。 | ⭐ |
| 单调队列 | Monotonic Queue | 队列中元素保持单调性,常用于滑动窗口最值问题。 | ⭐ |
| 消息队列 | Message Queue | 用于进程/线程间通信的队列结构,解耦生产者和消费者。 | |
| 环形缓冲区 | Ring Buffer / Circular Buffer | 固定大小的循环缓冲区,用于流式数据处理。 | ⭐ |
8.2 字符串结构
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 字符串 | String | 由零个或多个字符组成的有限序列。 | ⭐ |
| 空串 | Empty String / Null String | 长度为零的字符串。 | |
| 空格串 | Blank String | 由一个或多个空格组成的字符串。 | |
| 子串 | Substring | 字符串中任意连续字符组成的子序列。 | ⭐ |
| 主串 | Main String | 包含子串的原始字符串。 | |
| 模式串 | Pattern String | 在字符串匹配中待查找的字符串。 | ⭐ |
| 模式匹配 | Pattern Matching | 在主串中查找模式串出现的位置。 | ⭐ |
| 暴力匹配 | Brute-Force Matching / Naive String Matching | 逐字符比较,复杂度 O(n·m)。 | |
| KMP 算法 | Knuth-Morris-Pratt Algorithm | 利用部分匹配表(next 数组)跳过无效比较,O(n + m)。 | ⭐ |
| 部分匹配表 | Partial Match Table / Failure Function | KMP 算法中记录前缀后缀匹配长度的辅助数组。 | ⭐ |
| BM 算法 | Boyer-Moore Algorithm | 从右向左匹配,利用坏字符和好后缀规则,实践中高效。 | |
| Sunday 算法 | Sunday Algorithm | BM 算法的简化变体,关注匹配窗口后的下一字符。 | |
| 字典序 | Lexicographical Order | 按字符编码逐个比较的字符串排序规则。 | |
| 前缀 | Prefix | 从第一个字符开始的任意连续子串。 | |
| 后缀 | Suffix | 以最后一个字符结尾的任意连续子串。 | |
| 最长公共前缀 | Longest Common Prefix (LCP) | 多个字符串共同的最长前缀。 | |
| 最长公共子串 | Longest Common Substring | 多个字符串中最长的相同连续子串。 | |
| 最长公共子序列 | Longest Common Subsequence (LCS) | 多个字符串中按顺序出现但未必连续的最长公共序列。 | ⭐ |
| 编辑距离 | Edit Distance / Levenshtein Distance | 一个字符串转成另一个所需的最少插入、删除、替换次数。 | ⭐ |
8.3 树形结构补充
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 左孩子右兄弟 | Left-Child Right-Sibling Representation | 二叉树表示一般树的一种方式。 | |
| 平衡因子 | Balance Factor | AVL 树中某节点左右子树高度之差,取值范围 −1 / 0 / +1。 | ⭐ |
| 旋转 | Rotation(LL / RR / LR / RL) | AVL 树或红黑树中通过旋转调整平衡。 | ⭐ |
| 二叉堆 | Binary Heap | 用数组实现的完全二叉树堆结构,是实现优先队列的常用方式。 | ⭐ |
| 斐波那契堆 | Fibonacci Heap | 摊还复杂度更优的堆,合并操作 O(1),用于图算法优化。 | |
| 二叉堆合并 | Merge / Meld | 将两个堆合并为一个。 | |
| 左偏树 / 左式堆 | Leftist Heap | 用附加距离值(NPL)保证左偏,支持高效合并的堆。 | |
| 斜堆 | Skew Heap | 左式堆的自调整简化版本,不维护 NPL。 | |
| 配对堆 | Pairing Heap | 基于多路树的理论高效堆,实践性能优良。 | |
| 二项堆 | Binomial Heap | 由一组二项树组成的堆,合并效率高。 | |
| 伸展树 | Splay Tree | 每次访问后将节点旋转到根,分摊 O(log n)。 | ⭐ |
| 替罪羊树 | Scapegoat Tree | 用部分重构而非旋转来实现平衡的 BST。 | |
| Treap | Treap (Tree + Heap) | 结合 BST 与堆的性质,每个节点随机附加优先级。 | |
| 笛卡尔树 | Cartesian Tree | 按序列顺序构造,根为最值的二叉树。 | |
| 默克尔树 | Merkle Tree / Hash Tree | 叶子节点存数据哈希,非叶节点存子节点哈希,用于数据完整性校验。 | |
| 后缀树 | Suffix Tree | 压缩存储字符串所有后缀的 Trie,支持快速子串查询。 | ⭐ |
| 后缀数组 | Suffix Array | 所有后缀按字典序排序后的数组,空间优于后缀树。 | |
| 基数树 / 压缩 Trie | Radix Tree / Patricia Trie | 合并单分支节点的前缀树,节省空间。 | |
| 决策树 | Decision Tree | 用于机器学习分类/回归的树形模型;也指比较排序模型。 | |
| 支配树 | Dominator Tree | 控制流分析中,节点 A 支配 B 表示从入口到 B 的所有路径都经过 A。 | |
| 树的重心 | Centroid of a Tree | 删除该点后剩余连通块的最大节点数最小。 | |
| 树的直径 | Diameter of a Tree | 树中最长简单路径的长度。 | |
| 虚树 | Virtual Tree / Auxiliary Tree | 只保留关键节点及它们的 LCA,用于优化树上 DP。 | |
| 轻重链剖分 | Heavy-Light Decomposition (HLD) | 将树剖分为多条重链,支持路径/子树高效查询。 | ⭐ |
| 树链剖分 | Tree Chain Splitting | 重链剖分的另一种叫法。 | |
| 最近公共祖先 | Lowest Common Ancestor (LCA) | 两个节点的深度最大的共同祖先。 | ⭐ |
| 倍增法 | Binary Lifting | 通过预处理 2^k 代祖先,实现 O(log n) 查询 LCA 等信息。 | ⭐ |
8.4 图形结构补充
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 弧 | Arc | 有向图中的有向边。 | |
| 自环 | Loop / Self-loop | 顶点到自身的边。 | |
| 多重边 / 平行边 | Multiple Edge / Parallel Edge | 两顶点之间多条边。 | |
| 简单图 | Simple Graph | 无自环且无平行边的图。 | |
| 多重图 | Multigraph | 允许平行边但无自环的图。 | |
| 伪图 | Pseudograph | 允许自环和平行边的图。 | |
| 完全图 | Complete Graph | 每对顶点之间都有一条边的无向图。 | |
| 稠密图 / 稀疏图 | Dense Graph / Sparse Graph | 边数接近或远小于顶点数平方。 | |
| 子图 | Subgraph | 顶点集和边集都是原图的子集。 | |
| 生成子图 | Spanning Subgraph | 包含原图所有顶点的子图。 | |
| 补图 | Complement Graph | 原图中没有的边全部存在,有的边全部去掉。 | |
| 同构 | Isomorphism | 两个图通过重标顶点可以完全一样。 | |
| 连通性 | Connectivity | 图中顶点之间可达的性质。 | |
| 割点 / 关节点 | Articulation Point / Cut Vertex | 删除后连通分量增加的顶点。 | ⭐ |
| 桥 / 割边 | Bridge / Cut Edge | 删除后连通分量增加的边。 | ⭐ |
| 双连通分量 | Biconnected Component (BCC) | 无割点的极大连通子图。 | |
| 点双连通 / 边双连通 | Vertex/Edge Biconnected | 删除任一点/边后仍连通。 | |
| 传递闭包 | Transitive Closure | 反映顶点间可达关系的矩阵。 | |
| 宽度优先搜索 | Breadth-First Search (BFS) | 从起点逐层向外扩展,适合无权图最短路径。 | ⭐ |
| 深度优先搜索 | Depth-First Search (DFS) | 从起点沿着一条路径深入,再回溯。 | ⭐ |
| DFS 树 / BFS 树 | DFS Tree / BFS Tree | DFS/BFS 过程中生成的生成树/森林。 | |
| 树边 / 回边 / 前向边 / 横叉边 | Tree Edge / Back Edge / Forward Edge / Cross Edge | DFS 遍历中对边的分类。 | ⭐ |
| 拓扑序 | Topological Order | DAG 中每条有向边 (u, v) 均满足 u 在 v 之前的线性排序。 | ⭐ |
| 入度表 / 出度表 | In-degree / Out-degree Table | 存储每个顶点入度/出度的辅助表。 | |
| 迪杰斯特拉算法 | Dijkstra's Algorithm | 求非负权图单源最短路径的贪心算法。 | ⭐ |
| 贝尔曼-福特算法 | Bellman-Ford Algorithm | 支持负权边的最短路径算法,可检测负环。 | ⭐ |
| SPFA 算法 | Shortest Path Faster Algorithm | Bellman-Ford 的队列优化版本。 | |
| 弗洛伊德算法 | Floyd-Warshall Algorithm | 动态规划求所有点对最短路径,O(V³)。 | ⭐ |
| 约翰逊算法 | Johnson's Algorithm | 重赋权后结合 Dijkstra 和 Bellman-Ford 求所有点对最短路。 | |
| 负权边 / 负权环 | Negative Edge / Negative Cycle | 权值为负的边;环上边权之和为负的环。 | |
| 松弛操作 | Relaxation | 更新最短路径估计值的操作:if dv > du + w then dv = du + w。 | ⭐ |
| 最大流 | Maximum Flow | 从源点到汇点的最大可行流量。 | |
| 网络流 | Network Flow | 带容量限制的有向图。 | |
| 残留网络 | Residual Network / Residual Graph | 包含反向边的剩余容量图。 | |
| 增广路 | Augmenting Path | 残留网络中从源点到汇点的路径。 | |
| 割 / 最小割 | Cut / Minimum Cut (Min-Cut) | 顶点集划分;容量最小的 s-t 割。 | |
| 最大流最小割定理 | Max-Flow Min-Cut Theorem | 最大流等于最小割的容量。 | |
| 福特-富尔克森算法 | Ford-Fulkerson Algorithm | 用 DFS 不断寻找增广路求最大流。 | |
| 埃德蒙兹-卡普算法 | Edmonds-Karp Algorithm | 用 BFS 找最短增广路的 Ford-Fulkerson 实现。 | |
| 二分图匹配 | Bipartite Matching | 二分图中寻找最大匹配。 | ⭐ |
| 匈牙利算法 | Hungarian Algorithm | 求二分图最大匹配和赋权二分图最优匹配。 | |
| 网络流问题 | Flow Network Problems | 含最大流、最小费用流、多商品流等。 | |
| 最小费用最大流 | Minimum Cost Maximum Flow (MCMF) | 在流量最大前提下使总费用最小。 | |
| A* 算法 | A-Star (A*) Search | 结合启发式函数的最短路径启发式搜索算法。 | ⭐ |
| 启发式函数 | Heuristic Function | 引导搜索方向的估值函数 h(n)。 | |
| 并查集路径压缩 | Path Compression | 查找时将路径上节点直接连到根,优化后续查询。 | ⭐ |
| 按秩合并 | Union by Rank / Union by Size | 合并时将小的集合合并到大的集合,维持树高度平衡。 | ⭐ |
| 克鲁斯卡尔算法 | Kruskal's Algorithm | 按边权排序,贪心选取不构成环的边,用并查集判环。 | ⭐ |
| 普里姆算法 | Prim's Algorithm | 从任意顶点开始,每次选最小权边扩展 MST。 | ⭐ |
8.5 查找结构补充
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 斐波那契查找 | Fibonacci Search | 利用斐波那契数列分割有序序列,仅用加减法。 | |
| 插值查找 | Interpolation Search | 均匀分布时按比例估算位置,期望 O(log log n)。 | |
| 指数查找 | Exponential Search | 先找到大致范围再二分查找,适合无界数组。 | |
| 跳表查找 | Skip List Search | 利用多级索引链表快速定位。 | |
| 二叉排序树查找 | Binary Search Tree Lookup | 从根沿 BST 性质逐层比较。 | |
| 平衡二叉查找树 | Self-Balancing BST | AVL、红黑树、Splay 等保证 O(log n) 查找。 | |
| 布隆过滤器 | Bloom Filter | 用多个哈希函数判断元素是否可能存在;可能误判但绝不会漏判。 | ⭐ |
| 计数布隆过滤器 | Counting Bloom Filter | 支持删除操作的布隆过滤器。 | |
| 布谷鸟过滤器 | Cuckoo Filter | 用布谷鸟哈希思想,支持删除且空间效率更好。 | |
| 倒排索引 | Inverted Index | 从关键字映射到文档/位置的索引,搜索引擎核心。 | ⭐ |
| 正向索引 | Forward Index | 从文档映射到所含关键字的索引。 | |
| 签名文件 | Signature File | 用位图签名加速查找的方法。 | |
| 位图 / 位向量 | Bitmap / Bit Vector | 用位数组表示集合,利用位运算加速。 | |
| 双散列 | Double Hashing | 冲突时用第二个哈希函数计算步长。 | |
| 布谷鸟哈希 | Cuckoo Hashing | 用两个哈希函数,冲突时踢出已有元素重新安放。 | |
| 罗宾汉哈希 | Robin Hood Hashing | 开放定址变体,通过比较探测距离实现更均匀分布。 | |
| 一致性哈希 | Consistent Hashing | 减少增删节点时重新映射的数据量,用于分布式缓存。 | ⭐ |
| 布谷鸟一致性哈希 | Cuckoo Consistent Hashing | 一致性哈希和布谷鸟哈希结合的分布式方案。 | |
| 跳表哈希 | Hopscotch Hashing | 结合开放定址和链地址,通过邻域改善缓存性能。 |
8.6 排序算法补充
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 逆序对 | Inversion | 序列中 i < j 但 ai > aj 的 (i, j) 对;排序即消除逆序对。 | ⭐ |
| 归并段 | Run | 归并排序或外部排序中的有序子序列。 | |
| 多路归并 | K-way Merge | 同时合并 k 个有序序列。 | |
| 归并树 | Merge Tree / Tournament Tree | 用树形结构实现多路归并的胜者/败者树。 | |
| 胜者树 | Winner Tree | 选择较小元素作为胜者上浮的归并树。 | |
| 败者树 | Loser Tree | 记录败者、胜者上浮的归并树,重构更高效。 | |
| 置换-选择排序 | Replacement-Selection Sort | 用堆在内存中生成更长的初始归并段。 | |
| 最佳归并树 | Optimal Merge Tree | 哈夫曼树应用于多路归并,最小化磁盘 I/O。 | |
| 外部排序 | External Sorting | 数据不能一次全部装入内存时,分批排序并归并。 | ⭐ |
| 地精排序 | Gnome Sort / Stupid Sort | 简化版的插入排序,只有相邻交换。 | |
| 鸡尾酒排序 | Cocktail Sort / Bidirectional Bubble Sort | 冒泡排序的变体,双向交替扫描。 | |
| 煎饼排序 | Pancake Sorting | 只能用反转前缀的操作排序。 | |
| 睡眠排序 | Sleep Sort | 利用多线程/协程的睡眠时间差异排序(仅用于趣味展示)。 | |
| 蒂姆排序 | Timsort | 结合归并排序和插入排序的自适应排序,Java 和 Python 默认排序。 | ⭐ |
| 内省排序 | Introsort | 快速排序 + 堆排序 + 插入排序的混合算法,C++ std::sort 使用。 |
⭐ |
| 平滑排序 | Smoothsort | 堆排序的变种,接近有序时接近 O(n)。 | |
| 耐心排序 | Patience Sorting | 用一系列堆栈分区,最长递增子序列辅助。 | |
| 奇偶排序 | Odd-Even Sort | 并行排序算法,交替比较奇偶相邻对。 | |
| 样本排序 | Samplesort | 快速排序和归并排序的混合,用样本确定分区。 | |
| 基数排序 LSD / MSD | LSD / MSD Radix Sort | 从最低位/最高位开始的基数排序。 |
8.7 算法设计与复杂度补充
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| NP 完全问题 | NP-Complete Problem | 能在多项式时间内验证解,所有 NP 问题都可归约到它。 | |
| NP 难问题 | NP-Hard Problem | 至少与 NP 问题难度相当,未必在 NP 中。 | |
| P 问题 | P (Polynomial Time) | 可在多项式时间内求解的问题。 | |
| 归约 | Reduction | 将一个问题转换为另一个问题,以证明难度。 | |
| 摊还分析 | Amortized Analysis | 分析操作序列的平均代价而非单次最坏代价。 | |
| 聚集法 / 记账法 / 势能法 | Aggregate / Accounting / Potential Method | 摊还分析的三种经典方法。 | |
| 下界 | Lower Bound | 问题复杂度的理论上限下确界。 | |
| 渐近记号 | Asymptotic Notation | 大 O、Ω、Θ、o、ω,描述函数增长率。 | ⭐ |
| 大 O 记号 | Big-O Notation (O) | 渐近上界。 | ⭐ |
| 大 Ω 记号 | Big-Omega Notation (Ω) | 渐近下界。 | |
| 大 Θ 记号 | Big-Theta Notation (Θ) | 渐近紧确界。 | ⭐ |
| 小 o 记号 | Little-o Notation (o) | 非紧确上界(忽略常数因子)。 | |
| 小 ω 记号 | Little-omega Notation (ω) | 非紧确下界(忽略常数因子)。 | |
| 时间复杂度常数因子 | Constant Factor | 记号中省略的常数系数。 | |
| 主定理 | Master Theorem | 分治法递归时间复杂度的求解公式。 | ⭐ |
| 主方法 | Master Method | 使用主定理求解递归式的方法。 | |
| 递归树 | Recursion Tree | 将递归分解为树形结构,分析每层代价总和。 | |
| 代入法 | Substitution Method | 猜测并归纳证明递归解。 | |
| 记忆化搜索 | Memoization | 用缓存存储已计算子问题结果,是自顶向下的 DP。 | ⭐ |
| 状态转移方程 | State Transition Equation | DP 中描述子问题递推关系的方程。 | ⭐ |
| 无后效性 | No Aftereffect | 子问题状态一旦确定就与后续决策无关,是 DP 适用条件。 | |
| 最优子结构 | Optimal Substructure | 问题的最优解包含子问题的最优解。 | ⭐ |
| 重叠子问题 | Overlapping Subproblems | 相同的子问题多次出现,DP 通过缓存避免重复计算。 | ⭐ |
| 滚动数组 | Rolling Array / Space Optimization | DP 中只保留必要行/列以压缩空间到 O(n)。 | |
| 单调队列优化 DP | Monotonic Queue DP Optimization | 用单调队列降低 DP 转移复杂度。 | |
| 斜率优化 DP | Convex Hull Trick / Slope Optimization | 用于优化特定形式的 DP 转移方程。 | |
| 四边形不等式优化 | Quadrangle Inequality Optimization | 满足四边形不等式的 DP 可用更优决策单调性优化。 | |
| 状态压缩 DP | State Compression DP / Bitmask DP | 用二进制位表示集合状态的 DP。 | ⭐ |
| 数位 DP | Digit DP | 按数位逐一构造,统计满足约束的数字个数。 | |
| 树形 DP | Tree DP | 在树上递归进行 DP,通常自底向上或换根。 | |
| 换根 DP | Rerooting DP | 改变根节点重新计算以利用父节点信息。 | |
| 概率 DP / 期望 DP | Probability DP / Expected Value DP | 将概率或期望作为 DP 求解目标。 | |
| 区间 DP | Interval DP | 按子区间递推,合并相邻区间的代价。 | |
| 背包问题 | Knapsack Problem | 0/1 背包、完全背包、多重背包等经典 DP 问题。 | ⭐ |
| 启发式搜索 | Heuristic Search | 利用领域知识引导搜索方向。 | |
| 模拟退火 | Simulated Annealing | 以一定概率接受差解,模拟物理退火过程跳出局部最优。 | |
| 爬山算法 | Hill Climbing | 贪心选择邻域内最优解,容易陷入局部最优。 | |
| 遗传算法 | Genetic Algorithm (GA) | 模拟自然选择和遗传机制求解优化问题。 | |
| 禁忌搜索 | Tabu Search | 维护禁忌表避免重复搜索,跳出局部最优。 | |
| 蚁群算法 | Ant Colony Optimization (ACO) | 模拟蚂蚁觅食寻找最优路径。 | |
| 粒子群优化 | Particle Swarm Optimization (PSO) | 模拟鸟群捕食行为的群体智能算法。 | |
| 对抗搜索 | Adversarial Search / Game Theory Search | 双方轮流决策的博弈搜索,如 Minimax 算法。 | |
| 极小化极大算法 | Minimax Algorithm | 轮流选择使己方最大化对方最小化的策略。 | ⭐ |
| α-β 剪枝 | Alpha-Beta Pruning | 优化 Minimax,剪去不影响最终决策的分支。 | ⭐ |
| 博弈树 | Game Tree | 表示博弈中所有可能状态和决策的树。 | |
| 蒙特卡洛树搜索 | Monte Carlo Tree Search (MCTS) | 通过随机模拟评估节点,用于 AlphaGo 等博弈 AI。 | |
| 双向 BFS | Bidirectional BFS | 从起点和终点同时搜索,在中间相遇,显著减少搜索空间。 | |
| 迭代加深搜索 | Iterative Deepening Search (IDS) | 逐渐增加深度限制的 DFS,结合 DFS 空间小和 BFS 完备性。 | |
| IDA* 算法 | Iterative Deepening A* | A* 加迭代加深,适合内存受限环境。 | |
| 随机化算法 | Randomized Algorithm | 利用随机数以期望方式提高效率或简化实现。 | |
| 拉斯维加斯算法 | Las Vegas Algorithm | 总是给出正确解,但运行时间随机。 | |
| 蒙特卡洛算法 | Monte Carlo Algorithm | 运行时间固定但有一定概率给出错误答案。 | |
| 在线算法 | Online Algorithm | 在没有完整输入时逐步决策,与离线(Offline)对应。 | |
| 竞争比 | Competitive Ratio | 在线算法代价与最优离线代价之比的界。 | |
| 近似算法 | Approximation Algorithm | 在多项式时间内求出 NP 难问题的近似解。 | |
| 近似比 | Approximation Ratio | 近似解与最优解的质量比保证。 |
8.8 存储与系统相关术语
| 中文名称 | 英文术语 | 说明 | 重点 |
|---|---|---|---|
| 缓存 | Cache | 存储访问更快数据副本的硬件或软件结构。 | ⭐ |
| 缓存命中 / 未命中 | Cache Hit / Cache Miss | 请求数据在/不在缓存中。 | ⭐ |
| 缓存淘汰策略 | Cache Eviction / Replacement Policy | 缓存满时决定移除哪些数据的策略。 | ⭐ |
| LRU | Least Recently Used | 淘汰最久未使用的项。 | ⭐ |
| LFU | Least Frequently Used | 淘汰使用频率最低的项。 | |
| FIFO 缓存 | First-In First-Out Cache | 按入队顺序淘汰。 | |
| 页面置换算法 | Page Replacement Algorithm | 虚拟内存管理中换出页面的策略。 | |
| 缺页中断 | Page Fault | 访问的页不在物理内存中,需调入。 | |
| 局部性原理 | Locality of Reference | 时间局部性 / 空间局部性,程序访问地址集中。 | ⭐ |
| 时间局部性 | Temporal Locality | 刚被访问的数据很可能短期内再被访问。 | |
| 空间局部性 | Spatial Locality | 刚被访问数据附近的数据很可能被访问。 | |
| 内存碎片 | Memory Fragmentation | 空闲内存被分割成小段,无法分配大块。 | |
| 内部碎片 / 外部碎片 | Internal / External Fragmentation | 分配单元内部浪费 / 空闲块分散的小片。 | |
| 伙伴系统 | Buddy System | 将内存按 2 的幂分割与合并的内存管理算法。 | |
| 空闲链表 | Free List | 将空闲内存块用链表管理(隐式/显式)。 | |
| 垃圾回收 | Garbage Collection (GC) | 自动回收不再使用的内存空间。 | ⭐ |
| 标记-清除 | Mark-and-Sweep | 先标记可达对象,再清除未标记对象。 | |
| 标记-整理 | Mark-and-Compact | 标记后移动存活对象到一端以消除碎片。 | |
| 复制回收 | Copy Collection / Semi-space GC | 将存活对象复制到另一半空间,原空间整体清空。 | |
| 分代回收 | Generational Collection | 按对象存活时间分为新生代和老年代,分别回收。 | ⭐ |
| 引用计数 | Reference Counting | 记录每个对象被引用的次数,为 0 时回收。 | |
| 可达性分析 | Reachability Analysis | 从 GC Roots 向下追踪引用链,不可达的对象判定为垃圾。 | |
| 页式存储 | Paging | 内存等分为固定大小的页,解决外碎片。 | |
| 段式存储 | Segmentation | 按逻辑段(代码、数据、栈)分配内存。 | |
| 段页式存储 | Segmented Paging | 先分段再分页,综合两者优点。 | |
| 直接映射 | Direct Mapped Cache | 缓存行与内存地址一一对应的简单映射。 | |
| 全相联映射 | Fully Associative Cache | 任意内存块可放入任意缓存行。 | |
| 组相联映射 | Set Associative Cache | 缓存分为若干组,每组内全相联映射。 |