目录
- 一,数据结构的研究内容
- 二,基本概念与术语
-
- (一)数据、数据元素、数据项与数据对象
- (二)数据结构
- (三)数据类型与抽象数据类型
- ️ 三,抽象数据类型的表示与实现
- ⚙️ 四,算法与算法分析
-
- ⚖️ (一)算法的定义及特性
- (二)评价算法优劣的基本标准
- ⏱️ (三)算法的时间复杂度
- (四)算法的空间复杂度
- 章结
一,数据结构的研究内容

数据结构是计算机科学的核心基础,其研究内容可概括为三大维度:
- 数据组织形式:探索如何将现实世界中的信息(如文本、图像、网络关系)转化为计算机可处理的逻辑结构,包括线性结构(链表、栈、队列)与非线性结构(树、图)。
- 操作体系设计:定义针对数据结构的标准操作,例如数组的查找与排序、树的遍历与插入,这些操作直接影响程序的效率。
- 性能优化理论:通过时间复杂度(如O(n)、O(log n))和空间复杂度分析,评估不同数据结构在实际场景中的适用性,如数据库索引选择B+树而非二叉搜索树。
二,基本概念与术语
(一)数据、数据元素、数据项与数据对象
- 数据:计算机处理的所有符号的集合,例如数字
123
、字符'A'
、图像像素矩阵。
- 数据元素:数据的基本单位,可由多个数据项组成。如学生信息表中“张三”是一个数据元素,包含姓名、年龄、成绩等数据项。
- 数据项:数据的最小不可分割单位,如学生年龄
20
。
- 数据对象:具有相同性质的数据元素的集合,例如全体整数、所有英文字母。
(二)数据结构
数据结构是数据元素之间的逻辑关系、存储方式及操作的集合,分为:
- 逻辑结构:描述数据元素间的抽象关系,如:
- 线性结构:元素按顺序排列(链表、数组);
- 树形结构:层次化关系(二叉树、堆);
- 图状结构:多对多关系(社交网络模型)。
- 存储结构:数据在计算机中的物理表示,包括:
- 顺序存储(数组):连续内存空间,访问高效但插入删除低效;
- 链式存储(链表):离散内存块通过指针连接,灵活但访问需遍历。
(三)数据类型与抽象数据类型
- 数据类型:限定数据取值范围和操作,如C语言中的
int
(取值-231~231-1,支持加减乘除)。
- 抽象数据类型(ADT):将数据和操作封装为独立单元,仅暴露接口(如栈的
push
/pop
),隐藏实现细节,体现面向对象思想。
️ 三,抽象数据类型的表示与实现
以栈(Stack)为例:
- ADT定义:
ADT Stack {
数据:有限线性序列,支持后进先出(LIFO)
操作:InitStack(), Push(), Pop(), IsEmpty()
}
- 顺序栈实现:用数组存储,通过指针
top
标记栈顶,时间复杂度:
- 初始化:O(1)
- 入栈/出栈:O(1)(仅修改指针)
- 链栈实现:用单链表存储,头节点为栈顶,插入/删除时间复杂度O(1),空间动态分配更灵活。
⚙️ 四,算法与算法分析
⚖️ (一)算法的定义及特性
算法是解决问题的有限步骤序列,需满足:
- 有穷性:步骤有限,不会无限循环;
- 确定性:每一步操作明确无歧义;
- 可行性:可通过基本运算实现;
- 输入/输出:0个或多个输入,1个或多个输出。
(二)评价算法优劣的基本标准
- 正确性:能解决问题并返回正确结果;
- 可读性:代码逻辑清晰,便于维护(如注释、变量命名);
- 健壮性:对非法输入(如空指针)能合理处理;
- 效率:时间与空间复杂度低,是核心优化目标。
⏱️ (三)算法的时间复杂度
- 大O表示法:忽略低阶项和常数,描述最坏情况下的时间增长趋势。
- 例:冒泡排序(O(n²))、快速排序(平均O(n log n))。
- 常见复杂度级别(由低到高):
O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!)
- 计算示例:
int sum = 0, i;
for (i = 0; i < n; i++) {
sum += i;
}
(四)算法的空间复杂度
指算法运行时占用的额外内存空间,与输入规模的关系:
- 例1:数组排序(原地排序如快速排序,空间复杂度O(log n);非原地如归并排序,O(n))。
- 例2:递归算法(栈空间消耗等于递归深度,如二叉树遍历递归实现为O(h),h为树高)。
章结
数据结构是算法的“骨架”,而算法是数据结构的“灵魂”。从基础概念到ADT设计,再到复杂度分析,这套体系支撑着搜索引擎、区块链、AI模型等复杂系统的底层逻辑。理解它们,如同掌握计算机科学的“通用语言”,为解决实际问题提供理论基石。