←

计算机应用基础 · 计算机软件

算法和数据结构

算法和数据结构

结构化讲义

A2-2.4 · 6 个大纲考点讲义 · 已精编

练本节题目

A2-2.4.1

算法的基本概念,算法复杂度的概念和意义(时间复杂度与空间复杂度)。

精编讲义 v1#

算法的五大基本特征(必须全部背出,错一不可)

必记
  • 1. 有穷性(Finiteness):算法必须在执行有限个步骤之后正常终止,不能陷入无限死循环
  • 2. 确定性(Definiteness):算法的每一步骤都必须有明确确定无二义性的定义,不能模糊含混
  • 3. 可行性(Effectiveness):算法中描述的操作都可以通过已经实现的基本运算执行有限次完成
  • 4. 输入(Input):算法具有零个或多个输入(可以没有任何外部输入)
  • 5. 输出(Output):算法必须具有一个或多个输出(没有任何输出的算法毫无实际意义!)

算法复杂度两大维度:时间复杂度 vs 空间复杂度

必记

时间复杂度 T(n)

衡量度量本质
衡量算法执行所耗费的时间随问题规模 n 增长的渐进增长趋势
数学大 O 渐进符号表示法
以基本操作重复执行的频度度量,记作 O(f(n))
常见复杂度排序(从优到劣)
O(1) 常数阶 < O(log n) 对数阶 < O(n) 线性阶 < O(n log n) 线性对数阶 < O(n^2) 平方阶 < O(2^n) 指数阶

空间复杂度 S(n)

衡量度量本质
衡量算法在运行过程中所需占用的额外临时辅助存储空间大小
数学大 O 渐进符号表示法
不包括输入数据本身所占空间,仅计算法运行额外分配的辅助空间
常见复杂度排序(从优到劣)
原地工作的排序算法空间复杂度通常为 O(1)

算法输入与输出易错陷阱

必记

易错陷阱

专转本常考单选:“算法可以有 0 个输入,但必须至少有 1 个输出!” 如果某选项说“算法必须有至少一个输入”,则该说法必然是错误的。

随堂自测(3 题 · 共 397 道关联题)展开作答
填空2 分自测不计入学习进度

在计算机科学中,算法的时间与空间____通常用O表示。

填空2 分自测不计入学习进度

当问题规模 n 增大时,算法的执行时间 T(n) 的增长率和 f(n) 的增长率相同,即算法的执行时间 T(n),可用时间度量 O(f(n)) 来衡量,该度量称为算法的 ____。

填空2 分自测不计入学习进度

解决某一问题的算法也许有多种,但它们都必须满足确定性、有穷性、能行性、 输入和输出。其中输入的个数 n 应大于等于。(填一个数字)

A2-2.4.2

数据结构的定义,数据的逻辑结构与存储结构,数据结构的图形表示,线性结构与非线性结构的概念。

精编讲义 v1#

数据结构的核心公式

必记

计算机科学家沃思(Niklaus Wirth)提出经典名言:==程序 = 数据结构 + 算法==。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

数据的逻辑结构 vs 存储结构核心对比

必记
结构维度定义内涵与视角细分类别与典型代表
逻辑结构反映数据元素之间的逻辑关系,完全独立于计算机硬件存储实现线性结构(一对一,如线性表/栈/队列/串);非线性结构(树形结构一对多、图形网络多对多)
存储结构(物理结构)数据元素及其关系在计算机内存中的具体实际存储表现形式顺序存储结构(数组,连续地址物理相邻)、链式存储结构(指针节点,任意物理地址)、索引存储、散列存储(哈希表)

线性结构判定准则

必记

易错陷阱

线性结构的充要特征:存在唯一的第一个元素(表头);存在唯一的最后一个元素(表尾);除第一个元素外每个元素有且仅有一个直接前驱;除最后一个元素外每个元素有且仅有一个直接后继。

随堂自测(3 题 · 共 140 道关联题)展开作答
填空2 分自测不计入学习进度

数据的_________结构是数据的逻辑结构在计算机存储器上实现。

单选2 分自测不计入学习进度

数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为()。

多选2 分自测不计入学习进度

关于数据的逻辑结构与存储结构之间的关系,下述说法中错误的是____。

A2-2.4.3

线性表的定义,线性表的顺序存储结构及其插入与删除运算。

精编讲义 v1#

顺序表(顺序存储)的插入与删除算法分析

必记

插入操作

操作动作过程
在第 i(1 ≤ i ≤ n+1)个位置插入新元素,必须将第 i 到第 n 个元素全部向后移动 1 个位置
元素移动平均次数公式
在等概率情况下,平均移动元素次数为 n / 2
时间复杂度
最好 O(1)(表尾插入),最坏 O(n),平均 O(n)

删除操作

操作动作过程
删除第 i(1 ≤ i ≤ n)个元素,必须将第 i+1 到第 n 个元素全部向前移动 1 个位置
元素移动平均次数公式
在等概率情况下,平均移动元素次数为 (n - 1) / 2
时间复杂度
最好 O(1)(表尾删除),最坏 O(n),平均 O(n)

顺序表随机存取特性

必记

易错陷阱

顺序表最大的优点是支持随机存取(按数组下标可以在 O(1) 时间内直接定位任意第 i 个元素);主要缺点是插入和删除需要移动大量数据元素,且需要预先分配固定大小的连续内存块。

随堂自测(3 题 · 共 94 道关联题)展开作答
填空2 分自测不计入学习进度

在长度为n顺序存储的线性表中删除一元素,最坏情况下需要移动表中的()个元素。

填空2 分自测不计入学习进度

_是最常用且最简单的一种数据结构,即一种逻辑结构,表示数据元素之间一对一的关系。

填空2 分自测不计入学习进度

____是最常用且最简单的一种数据结构,它是一种逻辑结构,表示数据元素之间一对一的关系。

A2-2.4.4

栈和队列的定义,栈和队列的顺序存储结构及其基本运算。

精编讲义 v1#

栈(Stack) vs 队列(Queue)核心操作对比(专转本高频大题)

必记

栈

英文名称
Stack
操作规则原则
后进先出(LIFO,Last In First Out)
允许操作的一端
所有的插入(入栈 Push)和删除(出栈 Pop)操作只能在“栈顶(Top)”进行
经典应用场景
函数递归调用、括号匹配、表达式求值、浏览器后退历史

队列

英文名称
Queue
操作规则原则
先进先出(FIFO,First In First Out)
允许操作的一端
只允许在“队尾(Rear)”插入(入队),在“队头(Front)”删除(出队)
经典应用场景
打印机任务排队缓冲、操作系统 CPU 进程就绪队列、广度优先搜索(BFS)

循环队列假溢出与队满判定

必记

易错陷阱

为解决顺序队列的“假溢出”问题,通常采用循环队列(利用求模运算取余 % MaxSize)。 常见牺牲一个存储单元以区分队空队满: • 队空条件:front rear; • 队满条件:(rear + 1) % MaxSize front; • 队列中当前元素个数:(rear - front + MaxSize) % MaxSize。

随堂自测(3 题 · 共 157 道关联题)展开作答
填空2 分自测不计入学习进度

设栈 S 的初始状态为空,若元素 a、b、c、d、e、f 依次进栈,得到的出栈序列是 a、c、f、e、d、b,则栈 S 的容量至少是 ____。

填空2 分自测不计入学习进度

设栈 S 和队列 Q 的初始状态均为空,元素 a,b,c,d,e,f,g 依次进入栈 S。若每个元素出栈后立即进入队列 Q,且 7 个元素出队的顺序是 b,d,c,f,e,a,g,则栈 S 的容量至少是 ____。

填空2 分自测不计入学习进度

设输入序列为 1、2、3,则经过栈的作用后可以得到 ____ 种不同的输出序列。

A2-2.4.5

线性单链表、双向链表与循环链表的结构及其基本运算。

精编讲义 v1#

链表结构核心特性对比(单链表 / 循环链表 / 双向链表)

必记

单链表

节点结构指针域
包含数据域 data + 单个后继指针域 next
首尾闭合判定
尾节点的 next 指针固定为 NULL
优缺点与操作特性
插入和删除已知节点指针时时间复杂度为 O(1)(只需修改指针,无需移动数据);不支持随机访问,查表需从头 O(n) 遍历

循环单链表

节点结构指针域
结构同单链表
首尾闭合判定
尾节点的 next 指向头节点,形成环状闭合回路
优缺点与操作特性
从表中任意一个节点出发均能遍历访问到整张链表的所有元素

双向链表

节点结构指针域
包含数据域 data + 前驱指针 prior + 后继指针 next
首尾闭合判定
双向互通
优缺点与操作特性
支持直接向前向后双向检索遍历,但每个节点需额外存储一个指针空间

单链表中头节点(Head Node)的作用

必记

易错陷阱

在单链表第一个有效数据节点之前增设一个头节点的好处:使在链表第一个位置(表头)的插入和删除操作与在其他位置的操作统一,无需做特殊判断分支;空表与非空表处理逻辑一致

随堂自测(3 题 · 共 56 道关联题)展开作答
单选2 分自测不计入学习进度

线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

单选2 分自测不计入学习进度

线性表采用链式存储结构时,要求内存中可用存储单元的地址()

单选2 分自测不计入学习进度

线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。

A2-2.4.6

树的基本概念,二叉树的定义及其存储结构,二叉树的前序、中序和后序遍历。

精编讲义 v1#

二叉树四大核心数学性质(专转本每年必考计算题)

必记
性质序号性质内容公式应用推导与经典结论
性质 1在二叉树的第 i 层上,至多有 2^(i-1) 个节点(i ≥ 1)第 1 层至多 1 个,第 2 层至多 2 个,第 3 层至多 4 个
性质 2深度为 k 的二叉树,至多有 2^k - 1 个节点(k ≥ 1)深度为 3 的二叉树至多 7 个节点,深度为 4 至多 15 个节点
性质 3(最核心公式)==在任意一棵二叉树中,若叶子节点数(度为0)为 n0,度为 2 的节点数为 n2,则必有:n0 = n2 + 1==【例】:若某二叉树中度为 2 的节点有 10 个,则其叶子节点数必为 11 个
性质 4具有 n 个节点的完全二叉树的深度为 ⌊log2 n⌋ + 1衡量完全二叉树的高度

二叉树三大遍历次序规则与算例

必记
遍历方式遍历访问顺序规则根节点的访问位置
前序遍历(先序,Pre-order)根节点 -> 左子树 -> 右子树(根左右)最先访问根节点
中序遍历(In-order)左子树 -> 根节点 -> 右子树(左根右)中间访问根节点
后序遍历(Post-order)左子树 -> 右子树 -> 根节点(左右根)最后访问根节点

根据遍历序列还原二叉树规律

必记

易错陷阱

专转本必考题型:给出中序遍历 + 前序遍历(或后序遍历),可以唯一确定一棵二叉树;【方法】:从前序的最前(或后序的最后)找出根节点,然后在中序遍历序列中以此根为中心,左边全属于左子树,右边全属于右子树,递归还原。 注意:单独给出“前序 + 后序”无法唯一确定一棵二叉树!

随堂自测(3 题 · 共 130 道关联题)展开作答
填空2 分自测不计入学习进度

设某棵二叉树的中序遍历序列为ABCD,后序遍历序列为BADC,则其前序遍历序列为____。

填空2 分自测不计入学习进度

在一棵二叉树上第8层的结点数最多为____。

填空2 分自测不计入学习进度

若一棵二叉树具有 10 个度为 2 的结点,5 个度为 1 的结点,则二叉树的总的结点个数为 ____。