news 2026/9/7 7:40:52

hello-algo 数据结构与算法术语对照指南:128 个核心英文术语分类全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hello-algo 数据结构与算法术语对照指南:128 个核心英文术语分类全解析

hello-algo 数据结构与算法术语对照指南:128 个核心英文术语分类全解析

【免费下载链接】hello-algo《Hello 算法》:动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語,提供 Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart 等代码实现项目地址: https://gitcode.com/GitHub_Trending/he/hello-algo

本篇以仓库英文术语表 en/docs/chapter_appendix/terminology.md 为骨架(简体中文版见 docs/chapter_appendix/terminology.md),将书中全部术语按「算法基础—复杂度—数据结构—算法策略」的章节脉络重新组织为带定义、带原文出处的分类索引。读完你将能:① 把英文术语准确对应回《Hello 算法》正文与源码;② 建立阅读英文教材/论文所需的专业词汇体系;③ 在需要检索某个概念时,通过术语直达其所属章节与代码实现。

术语表在本书中的定位

《Hello 算法》(hello-algo) 是一套以「动画图解 + 一键可运行代码」讲解数据结构的开源教程。由于其正文涉及大量中英对照的专业名词(如 complement、chaining、probing、heapify、pruning 等),书末特意在附录中维护了一张全量术语表,帮助读者:

  • 在读正文遇到某个术语时快速定位其英文/中文标准叫法;
  • 在阅读英文文献、查阅英文 API 文档、参与英文技术社区讨论时使用统一词汇;
  • 在跨语言版本(简体中文、繁体中文、English、日本語、俄语等)间对照时保持一致口径。

当前仓库的多个语言版本目录下均维护了同结构的chapter_appendix/terminology.md(如 en/docs/chapter_appendix/terminology.md、docs/chapter_appendix/terminology.md),作为 mkdocs 导航(见 en/mkdocs.yml)中附录章节的组成部分。需要说明的是,术语表是「名词速查索引」而非算法教程,因此本文在展示全量词条的同时,会为每个分类补充书中出处与仓库内可验证的实现依据,让每条术语都能「追回正文」。

一、基础概念与编程术语

这类术语构成全书一切讨论的通用语言,正文在 chapter_introduction(绪论)与 chapter_data_structure(数据结构绪论)中反复使用:

English简体中文
algorithm算法
data structure数据结构
code代码
file文件
function函数
method方法
variable变量

其中algorithmdata structure是全书核心定义:算法是求解问题的步骤/方法,数据结构是数据的组织与存储方式,二者共同决定了程序的正确性与效率(详见 docs/chapter_introduction/what_is_dsa.md)。function 与 method的区别常被初学者混淆:在面向对象语境下,定义在类内部的函数习惯称为「方法」,这点在阅读 Java/C++/C# 等面向对象语言的示例代码时尤其常见。

二、复杂度分析(第一章核心词)

English简体中文
asymptotic complexity analysis渐近复杂度分析
time complexity时间复杂度
space complexity空间复杂度
loop循环
iteration迭代
recursion递归
tail recursion尾递归
recursion tree递归树
big-$O$ notation大 $O$ 记号
asymptotic upper bound渐近上界
sign-magnitude原码
1’s complement反码
2’s complement补码

讲解出处:docs/chapter_computational_complexity/time_complexity.md、docs/chapter_computational_complexity/space_complexity.md、docs/chapter_computational_complexity/iteration_and_recursion.md。要点辨析:

  • time complexity / space complexity是「渐近复杂度分析」的一对结果:只关心 $n \to \infty$ 时的增长趋势,用大 $O$ 记号(big-$O$ notation)表示渐近上界(asymptotic upper bound),因此实际写作 $O(\cdot)$ 时舍去常数与低阶项。
  • loop / iteration / recursion:循环是语法结构,迭代与递归是两种「重复执行」的实现策略。正文指出递归调用产生函数调用栈开销,而**尾递归(tail recursion)**把递归调用放在函数返回前的最后一步,理论上编译器/解释器可以将其优化为与迭代同级的空间效率——正文同时特别注明 Python 默认并不支持尾递归优化(iteration_and_recursion.md)。
  • recursion tree:当一个函数内部发起多次递归调用时(如斐波那契),一次调用会分叉出两个调用分支,反复分叉最终形成一棵 n 层的「递归树」,这正是分析递归时间复杂度的直观工具。
  • sign-magnitude / 1’s complement / 2’s complement原码/反码/补码,属于 docs/chapter_data_structure/number_encoding.md(计算机中整数与浮点数的二进制表示)的术语。三者中唯有补码使加减法可以统一用加法电路实现,这也是现代计算机普遍采用补码存储有符号整数的原因。

三、数组、链表与存储层次

English简体中文
array数组
index索引
linked list链表
linked list node, list node链表节点
head node头节点
tail node尾节点
list列表
dynamic array动态数组
hard disk硬盘
random-access memory (RAM)内存
cache memory缓存
cache miss缓存未命中
cache hit rate缓存命中率

出处:docs/chapter_array_and_linkedlist/array.md、linked_list.md、list.md、ram_and_cache.md。要点:

  • **array(数组)**把同类元素连续存放,通过 **index(索引)**实现 $O(1)$ 随机访问;**linked list(链表)**由一个个 **node(节点)**通过引用串成,访问需从头遍历,但插入/删除只改引用。head node / tail node(头/尾节点)分别指链表第一与最后一个节点。
  • list 与 dynamic array(列表与动态数组):编程语言中的list(如 Python 的 list、C++ 的 vector、Java 的 ArrayList)本质是基于数组的动态扩容容器,属于动态数组。仓库中 codes/c/chapter_array_and_linkedlist/my_list.c 等实现即为手写动态数组的完整示例。
  • hard disk / RAM / cache memory构成存储金字塔:硬盘容量大速度慢、内存(RAM)居中、cache(缓存)是 CPU 与内存间的高速小容量缓冲。数组因空间局部性好而缓存命中率高;cache miss / cache hit rate(缓存未命中/命中率)是衡量程序访存效率的关键指标,正文用它们解释「为何数组比链表在工程中常常更快」。

四、栈、队列与双向队列

English简体中文
stack
top of the stack栈顶
bottom of the stack栈底
queue队列
double-ended queue双向队列
front of the queue队首
rear of the queue队尾

出处:docs/chapter_stack_and_queue/stack.md、queue.md、deque.md。栈是「后进先出」(LIFO)结构,进出都发生在top(栈顶),与 **bottom(栈底)**相对;队列是「先进先出」(FIFO)结构,从 **rear(队尾)**入队、从 **front(队首)**出队。**double-ended queue(双向队列)**则在两端都能插入与删除。仓库在 codes/c/chapter_stack_and_queue/ 下提供了array_stack.clinkedlist_queue.carray_deque.clinkedlist_deque.c等基于数组与链表的两种实现对照。

五、哈希表相关术语

English简体中文
hash table哈希表
hash set哈希集合
bucket
hash function哈希函数
hash collision哈希冲突
load factor负载因子
separate chaining链式地址
open addressing开放寻址
linear probing线性探测
lazy deletion懒删除

出处:docs/chapter_hashing/hash_map.md、hash_collision.md、hash_algorithm.md。这是术语最密集也最容易混淆的一组,正文辨析非常细致:

  • **hash table(哈希表)**底层是一个数组,数组的每个位置称为一个bucket(桶);**hash function(哈希函数)**把 key 映射到桶下标。当多个 key 落入同一桶即为hash collision(哈希冲突)——由于输入空间通常远大于输出空间,冲突在理论上不可避免。
  • 两类主流解决思路:
    • separate chaining(链式地址):让每个桶退化为一条链表,冲突元素都挂到同一条链表上。仓库实现见 codes/c/chapter_hashing/hash_map_chaining.c。当链过长时可进一步转成 AVL 树/红黑树以把查询降到 $O(\log n)$。
    • open addressing(开放寻址):不引入额外结构,冲突时沿数组继续探测,最常见的是以步长 1 顺序后移的linear probing(线性探测),实现见 codes/c/chapter_hashing/hash_map_open_addressing.c。由于直接删除会切断探测链,需要以TOMBSTONE常量打标记,即lazy deletion(懒删除)
  • load factor(负载因子)= 已存储元素数 / 桶数量,是触发扩容的阈值指标。正文给出的链式地址哈希表以「负载因子超过 $2/3$ 时扩容为原容量 2 倍」为例(hash_collision.md)。

六、树结构术语(全书词条最多的一组)

English简体中文
binary tree二叉树
tree node树节点
left-child node左子节点
right-child node右子节点
parent node父节点
left subtree左子树
right subtree右子树
root node根节点
leaf node叶节点
edge
level
degree
height高度
depth深度
perfect binary tree完美二叉树
complete binary tree完全二叉树
full binary tree完满二叉树
balanced binary tree平衡二叉树
binary search tree二叉搜索树
AVL treeAVL 树
red-black tree红黑树
level-order traversal层序遍历
breadth-first traversal广度优先遍历
depth-first traversal深度优先遍历
pre-order traversal前序遍历
in-order traversal中序遍历
post-order traversal后序遍历
balanced binary search tree平衡二叉搜索树
balance factor平衡因子

出处:docs/chapter_tree/binary_tree.md、binary_tree_traversal.md、binary_search_tree.md、avl_tree.md。需重点厘清的定义(正文有精确定义,binary_tree.md):

  • 结构名词:**root node(根节点)**在最顶层(第 1 层),无父节点;**leaf node(叶节点)**无子节点;**level(层)**自上而下递增;**degree(度)**指节点的子节点个数,二叉树中度只能为 0、1、2;**height(高度)**与 **depth(深度)**在本书中均按「经过的边数」计量(根高度即树高),但正文注明部分教材按「路径上节点数」计量,此时数值会大一——这正是中文「高度/深度」术语在文献间最易踩的坑。
  • 特殊二叉树:**perfect binary tree(完美二叉树)**每层全满,高为 $h$ 时节点总数 $2^{h+1}-1$(正文注明中文社区常称其为「满二叉树」,存在命名混用);**complete binary tree(完全二叉树)**只允许最底层不满且节点从左到右连续填充,堆的数组存储正是基于它;**full binary tree(完满二叉树)**指所有非叶节点都有两个子节点。三者概念正交、务必区分。图源对照可参考 docs/chapter_tree/binary_tree.assets/ 下 perfect/complete/full/balanced 四图。
  • **balanced binary tree(平衡二叉树)**要求任一节点左右子树高度之差的绝对值不超过 1;AVL 树在此基础上显式维护balance factor(平衡因子)(本书定义为左子树高度减右子树高度,见 docs/chapter_tree/avl_tree.md,实现见 codes/c/chapter_tree/avl_tree.c),通过旋转保持balanced binary search tree。**red-black tree(红黑树)**是另一类常见平衡二叉搜索树,其约束更宽松、插入删除旋转更少——它在仓库正文中作为对比参照出现(avl_tree.md),也是 JavaHashMap桶链表过长时的转换目标。
  • 遍历术语:**level-order / breadth-first traversal(层序/广度优先遍历)**按层逐行扫描,借助队列实现;pre/in/post-order(前/中/后序)遍历是深度优先的三种变体,前序「根左右」、中序「左根右」(二叉搜索树中序得到递增序列)、后序「左右根」,实现见 codes/c/chapter_tree/binary_tree_dfs.c。

七、堆结构术语

English简体中文
heap
max heap大顶堆
min heap小顶堆
priority queue优先队列
heapify堆化
top-$k$ problemTop-$k$ 问题

出处:docs/chapter_heap/heap.md、build_heap.md、top_k.md。**heap(堆)**在本书指基于完全二叉树实现的优先队列式结构:max heap堆顶为最大值、min heap堆顶为最小值;**priority queue(优先队列)**是抽象接口,堆是其最常见的底层实现。**heapify(堆化)**指自底向上/自顶向下调整节点以恢复堆序的过程,分「从顶至底堆化」与「从底至顶堆化」。top-$k$ 问题(求前 k 大/小元素)的堆解法只需 $O(n \log k)$,是堆「只关心极值」特性的典型应用。实现见 codes/c/chapter_heap/my_heap.c(大顶堆)与top_k.c

八、图相关术语

English简体中文
graph
vertex顶点
undirected graph无向图
directed graph有向图
connected graph连通图
disconnected graph非连通图
weighted graph有权图
adjacency邻接
path路径
in-degree入度
out-degree出度
adjacency matrix邻接矩阵
adjacency list邻接表
breadth-first search广度优先搜索
depth-first search深度优先搜索

出处:docs/chapter_graph/graph.md、graph_operations.md、graph_traversal.md。**vertex(顶点)**与 **edge(边)**是图的基本组成;边无方向为undirected graph,有方向为directed graph;有向图里以某顶点为终点的边数称为in-degree(入度),为起点的边数称为out-degree(出度)。按是否带权、是否连通再区分为weighted / connected / disconnected graph。图的存储有两大方案:**adjacency matrix(邻接矩阵)占用 $O(n^2)$ 空间但判断任意两点是否adjacent(邻接)**为 $O(1)$;**adjacency list(邻接表)**更省空间但需遍历,其结构与哈希表的链式地址高度相似,链过长时同样可转 AVL 树/红黑树(graph.md)。BFS/DFS(广度优先搜索/深度优先搜索)是两大遍历算法,注意与树的 level-order/DFS 遍历术语呼应。实现见 codes/c/chapter_graph/graph_adjacency_matrix.c、graph_adjacency_list.cgraph_bfs.cgraph_dfs.c

九、搜索算法术语

English简体中文
binary search二分查找
searching algorithm搜索算法

出处:docs/chapter_searching/binary_search.md、searching_algorithm_revisited.md。**binary search(二分查找)**针对有序数组,通过每轮将搜索区间减半实现 $O(\log n)$ 查找,前提是数据有序且支持随机访问;以此为基点,书中还讨论了二分查找的边界问题(binary_search_edge.md)、插入点问题(binary_search_insertion.md)以及「用哈希代替线性查找」的工程思路(replace_linear_by_hashing.md)。实现见 codes/c/chapter_searching/binary_search.c。

十、排序算法术语

English简体中文
sorting algorithm排序算法
selection sort选择排序
bubble sort冒泡排序
insertion sort插入排序
quick sort快速排序
merge sort归并排序
heap sort堆排序
bucket sort桶排序
counting sort计数排序
radix sort基数排序

出处:docs/chapter_sorting/。这些术语既是算法名也是章节名,每一类都有对应 markdown 讲解与多语言代码:冒泡/选择/插入属于 $O(n^2)$ 的简单排序,快排/归并/堆排属于 $O(n \log n)$ 的高级排序(快排注意其最差 $O(n^2)$ 退化,见 quick_sort.md),桶/计数/基数属于以空间换时间、可突破 $O(n \log n)$ 下界的非比较排序。排序章节开篇的 sorting_algorithm.md 会对比各种排序的稳定性、时间复杂度、空间复杂度与自适应特性,术语表正是阅读那张对比表的词汇前提。

十一、分治与汉诺塔

English简体中文
divide and conquer分治
hanota problem汉诺塔问题

出处:docs/chapter_divide_and_conquer/divide_and_conquer.md、hanota_problem.md。**divide and conquer(分治)**把原问题分解为若干规模更小的子问题、递归求解再合并结果,典型应用即归并排序、快速排序与二分查找。汉诺塔问题是展示分治思想的经典递归例题,其最优策略恰为子问题分解的递归过程,代码见 codes/c/chapter_divide_and_conquer/hanota.c。

十二、回溯算法术语

English简体中文
backtracking algorithm回溯算法
constraint约束
solution
state状态
pruning剪枝
permutations problem全排列问题
subset-sum problem子集和问题
$n$-queens problem$n$ 皇后问题

出处:docs/chapter_backtracking/backtracking_algorithm.md。回溯是「走不通就回头」的深度优先搜索策略,其关键词体系为:每个分支点是一个state(状态);每一步的可行选择受 **constraint(约束)**限制;走到尽头得到的完整状态序列即为一个solution(解);在进入某分支前提前判断其不可能产生合法解并跳过,称为pruning(剪枝)。三个经典问题分别来自独立章节:全排列(permutations_problem.md)、子集和(subset_sum_problem.md)、$n$ 皇后(n_queens_problem.md)。注意「state」在本书中横跨回溯(docs/chapter_backtracking/backtracking_algorithm.md)与动态规划两大章节,但含义侧重不同(DP 的 state 指子问题的状态定义)。

十三、动态规划术语

English简体中文
dynamic programming动态规划
initial state初始状态
state-transition equation状态转移方程
knapsack problem背包问题
edit distance problem编辑距离问题

出处:docs/chapter_dynamic_programming/。**dynamic programming(动态规划)**的核心方法论是「定义状态 → 推导状态转移方程 → 确定初始状态 → 确定遍历顺序」。术语表中四个关键概念直接对应 DP 解题流水线(dp_solution_pipeline.md):

  • **initial state(初始状态)**即最小子问题的解,是递推的起点(如爬楼梯的 $dp[1]$、$dp[2]$);
  • **state-transition equation(状态转移方程)**描述如何由更小的子问题推出当前状态(如 $dp[i] = dp[i-1] + dp[i-2]$);
  • **knapsack problem(背包问题)**与 **edit distance problem(编辑距离问题)**是书中两大 DP 例题,前者衍生出 0-1 背包、完全背包与「恰好装满」变体(knapsack_problem.mdunbounded_knapsack_problem.md),后者是二维 DP 的经典代表(edit_distance_problem.md)。

十四、贪心算法

English简体中文
greedy algorithm贪心算法

出处:docs/chapter_greedy/greedy_algorithm.md。贪心算法的思想是「每步都做当前看起来最优的选择」,并希望局部最优能累积为全局最优——正因如此,它必须通过数学证明或反例验证才能使用(正文举出分数背包可贪心、0-1 背包不可贪心的对照,见fractional_knapsack_problem.mdknapsack_problem.md)。术语表用词条最少的一组收尾,恰与本书「贪心一章相对独立、问题形态多样」的定位相符。

十五、把术语表用起来:三条实践建议

  1. 以章节为单位成组记忆:术语表按本书章节顺序排列并非偶然——数组/链表、栈/队列、哈希、树、堆、图、排序等每组词条恰好对应一组 mkdocs 章节目录。把上文的 14 个分类当作复习清单,学完一章即可核对一章,未掌握的术语就是需要回看的薄弱点。
  2. 把词条与仓库代码互相印证:术语不是孤立的名词。例如理解balance factor就打开 codes/c/chapter_tree/avl_tree.c 看height字段与旋转逻辑;理解separate chaining就对照 codes/c/chapter_hashing/hash_map_chaining.c 的扩容与冲突插入代码。多语言实现(如 codes/python、codes/java 等目录)可横向对比同一术语在不同语言 API 中的落地形态。
  3. 跨语言对照阅读:遇到「原码/反码/补码」「完满/完全/完美二叉树」这类在中文语境下极易混淆的命名时,可直接查阅仓库其他语言版本的同名术语表(繁体 zh-hant/docs、日文 ja/docs、俄文 ru/docs 下均有chapter_appendix/目录),通过官方多语言译文校准自己的理解,这也是术语表服务于多语言社区的核心价值。

总而言之,这份 128 词的术语表是整本《Hello 算法》的「概念坐标系」:每一个词条都能在正文章节、随书代码与练习题之间建立可回溯的引用关系。将本文作为你的双语词汇索引与复习清单,配合动画图解逐章阅读,即可在掌握数据结构与算法原理的同时,同步建立起阅读英文技术资料所必需的专业词汇能力。

【免费下载链接】hello-algo《Hello 算法》:动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語,提供 Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart 等代码实现项目地址: https://gitcode.com/GitHub_Trending/he/hello-algo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 7:39:12

优图房租水电费收据打印软件v11.0:功能详解与zip安装实操

简介:优图房租水电费收据打印软件 v11.0.zip 是一款面向房东、物业及中小企业日常收据管理场景的免安装绿色软件,专注解决房租、押金、水费、电费、燃气费等收据的开具与存档问题。软件采用即输即打设计,无需预先建立出租房资料即可直接开单&…

作者头像 李华
网站建设 2026/9/7 7:39:08

dnSpy实战指南:反编译、调试与修改.NET程序集

简介:dnSpy 是一款面向 .NET 开发者和逆向工程爱好者的 C# 反编译与调试工具,支持将 DLL/EXE 还原为可读的 C# 代码,并集成断点调试、变量查看、热替换及直接修改程序集等能力,适合用于代码学习、问题排查、安全分析及逆向研究。这…

作者头像 李华
网站建设 2026/9/7 7:38:49

C++服务端生成Word文档:Aspose.Words.Cpp实战指南

简介:Aspose.Words.Cpp 18.11 是供 C 开发者使用的文档处理库,无需安装 Microsoft Office 即可创建、读取和编辑 Word 文档,并可将文档导出为 PDF、HTML 等格式;同时支持邮件合并、样式排版、宏与 VBA 处理等高级功能,…

作者头像 李华
网站建设 2026/9/7 7:38:25

青龙面板升级失败起不来?玩客云 / Docker 环境完整排查全指南

青龙面板升级失败起不来?玩客云 / Docker 环境完整排查全指南 【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript&#xf…

作者头像 李华
网站建设 2026/9/7 7:37:19

GitHub纯净模拟器评测:从Stars到进程网络日志的验收指南

GitHub 上有一个模拟器项目,Stars 只有 2 个,标题却很能打:“史上最纯净的模拟器”。按常理,一个只有 2 颗星的项目,要么是刚发布的小原型,要么是作者自用顺手放出来的工具。但“纯净”这两个字放在模拟器前…

作者头像 李华