843 / 学习讲义

信息技术 / 07

非线性结构、查找与排序

一次解决一个小问题。从具体例子开始,理解条件,再亲手算一遍。

07 / 非线性结构、查找与排序 · 小节 1

树、二叉树与遍历

读完这一节,你会

画树并按规定顺序遍历,理解搜索树的条件。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:算法、复杂度与递归 栈与队列:不同的出场顺序 · 符号回看

从一个问题开始

文件夹有层级,为什么用一条链描述不自然?

先序遍历:根、左、右

先序遍历:根、左、右。步骤文字在图下。BADC
1 / 4

先访问根B。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

树连接父子关系,无环;根没有父节点,叶子无子节点。二叉树每节点最多两个有区别的孩子,左和右不能随便交换。完全二叉树除最后层外满,最后层向左连续;不是所有二叉树都适合紧凑数组存储。遍历:先序根左右,中序左根右,后序左右根;层序使用队列。二叉搜索树BST要求每个节点左子树键较小、右子树较大,重复键策略须约定;中序结果有序。

为什么成立 · 关键推导

递归遍历先处理空树:直接返回;其余按所选顺序访问根和两个子树。搜索按比较选择一个分支,复杂度O(h),h是树高;平衡时O(log n),退化成链时O(n)。不是出现“树”就自动对数复杂度。

入门例题 / 1

根B,左A,右D且D左C:先序B A D C,中序A B C D,后序A C D B,层序B A D C。每次先写规则再走图。

典型应用与变式 / 2

把1、2、3、4顺序插入普通BST会形成右链,查4需走4个节点。平衡树通过维护高度等信息避免这种退化,但本节不要求实现全部平衡操作。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

知道中序序列就能唯一恢复二叉树吗?

需要一点提示

不同形状能有同一中序。

查看过程、答案与错因

不能;互异标签的中序配合先序或后序通常可重建,只有中序不够。

计算与执行过程

根2、左1、右3,写三种深度遍历。

需要一点提示

根访问的时机不同。

查看过程、答案与错因

先序2,1,3;中序1,2,3;后序1,3,2。

条件与错误辨析

BST中序含重复值一定违反定义吗?

需要一点提示

先问重复键存放规则。

查看过程、答案与错因

不一定。有的实现合并计数,有的规定放某侧;题目必须统一规则,不能默认所有实现都禁止重复。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

preorder(node):
  若 node 为空:返回
  访问 node
  preorder(node.left)
  preorder(node.right)
将访问根移到两次递归之间是中序;移到之后是后序。

带走这一句

遍历是访问规则,搜索树是大小约束,两者别混淆。

07 / 非线性结构、查找与排序 · 小节 2

哈夫曼树:让常见符号更短

读完这一节,你会

一步步合并最小权重,检验编码能否无歧义解码。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:树、二叉树与遍历 · 符号回看

从一个问题开始

四个字母频率不同,用一样长的编码会浪费什么?

每次合并当前最小两项

每次合并当前最小两项。步骤文字在图下。1位置 02位置 13位置 24位置 3
1 / 4

初始权重1、2、3、4。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

叶子权重代表频率,路径长度是根到叶的边数。带权路径长度WPL=Σ权重×长度。哈夫曼算法反复选择当前最小的两棵树合并,新根权重为两者之和,直到只剩一棵。左边0右边1可得前缀码:没有一个符号编码是另一个的前缀,因此可即时逐段解码。同权时合并次序可能不唯一,但最优WPL相同。

为什么成立 · 关键推导

频率越高,短路径节省越多;贪心选择把最低频符号放到最深相邻叶,再将其视为一个合并符号递归处理。WPL也等于每次合并产生的新权重之和,可用于独立核算。

入门例题 / 1

权重1、2、3、4:1+2=3;3+3=6;4+6=10。WPL=3+6+10=19。可给4编码0、原3编码10、1编码110、2编码111,核算4×1+3×2+1×3+2×3=19。

典型应用与变式 / 2

码{0,10,110,111}中串010111可拆0|10|111。码{0,01,1}不是前缀码,因为0是01的前缀,串01可拆成01或0|1,产生歧义。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

哈夫曼编码必须唯一吗?

需要一点提示

左右分配0和1也能交换。

查看过程、答案与错因

不唯一。同权合并和左右方向可变,码字不同但可保持同样WPL。

计算与执行过程

权重2、3、7的WPL是多少?

需要一点提示

先合并最小两个。

查看过程、答案与错因

2+3=5,再5+7=12,总WPL17;叶深2、2、1核算4+6+7=17。

条件与错误辨析

每次只选一个最小权重与最大权重合并还能保证最优吗?

需要一点提示

算法要求两最小。

查看过程、答案与错因

不能。贪心依据被破坏;不能因为仍生成前缀树就称其最优。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

把所有正频率叶放入最小优先队列Q
当 Q 至少有2项:
  a ← 取最小项;b ← 再取最小项
  新根权重 ← a.weight+b.weight
  新根左右孩子 ← a,b
  新根放回Q
仅一个符号时,实际码流需约定长度/码字以支持解码。

带走这一句

前缀条件保证能解码,最小合并保证加权长度最优。

07 / 非线性结构、查找与排序 · 小节 3

图的表示、遍历与拓扑次序

读完这一节,你会

把关系转成图,按明确规则执行遍历。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:哈夫曼树:让常见符号更短 · 符号回看

从一个问题开始

校园道路与课程先修关系都能画成点和线,但方向意味着什么?

图遍历:发现时标记

图遍历:发现时标记。步骤文字在图下。A已发现BCD
1 / 3

从A开始,邻居按字母访问。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

图G=(V,E),V是顶点,E是边。有向边有起止,无向边表示双向关系;权重表示长度或成本。邻接矩阵用V×V空间,查边快;邻接表只记录实际邻居,适合稀疏图。DFS深度优先沿一条路深入,使用递归或栈;BFS广度优先逐层扩张,使用队列,能求无权图最少边数路径。

遍历必须记visited防止环导致重复;非连通图要从每个尚未访问的点再开始。拓扑序只适用于有向无环图DAG,将入度0节点反复输出并删其出边;存在多个可选点时次序不唯一。

为什么成立 · 关键推导

先声明邻居访问顺序(本课按字母)。BFS节点入队时即标记可避免重复入队。DFS递归进入时标记。拓扑排序若输出数少于顶点数,则剩余部分有环,不能强行补成一个合法顺序。

入门例题 / 1

无向边AB、AC、BD、CD,从A按字母访问。BFS:A入队,发现B、C,再从B发现D,结果A B C D;DFS为A B D C。

典型应用与变式 / 2

先修边A→C、B→C、C→D。初始A、B入度0,输出A B C D合法,B A C D也合法;若再加D→A,形成环A→C→D→A,无法完成拓扑序。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

BFS一定求最小权重路径吗?

需要一点提示

无权的层数与带权距离不同。

查看过程、答案与错因

不一定;BFS适用于无权或相同正权边的最少边数问题,任意权重需相应算法。

计算与执行过程

无向链A—B—C,邻接矩阵按ABC怎么写?

需要一点提示

无自环对角为0,对称。

查看过程、答案与错因

(010101010)\begin{pmatrix}0&1&0\\1&0&1\\0&1&0\end{pmatrix}。无向边在矩阵两侧各出现一次。

条件与错误辨析

DFS只从一个起点运行可遍历任意图所有节点吗?

需要一点提示

考虑另一个不连通分量。

查看过程、答案与错因

不能。要外层遍历所有点,对未访问点再启动DFS。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

BFS(start):
  start 标为已发现并入队
  当队列非空:
    u ← 出队;访问u
    对u的邻居v(按题目约定次序):
      若v未发现:标记v并入队
非连通图外层还须遍历所有未发现顶点。

带走这一句

图算法的结果依赖方向、权重和访问顺序,先把约定写清。

07 / 非线性结构、查找与排序 · 小节 4

最短路径与最小生成树

读完这一节,你会

区分一条最快路线与连接所有地点的最低总成本。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:图的表示、遍历与拓扑次序 · 符号回看

从一个问题开始

导航找A到D最短路,与铺网线连接全部楼,为什么不是同一题?

距离由路径累加,不能只看最后一条边

距离由路径累加,不能只看最后一条边。步骤文字在图下。ABCD14251
1 / 3

无向边AB1、AC4、BC2、BD5、CD1;起点A距离0。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

单源最短路最小化起点到各点的路径总权;Dijkstra每次确定未确定点中暂定距离最小者,再松弛其出边,要求边权非负。松弛是检查d[v]>d[u]+w(u,v)并更新。Floyd依次允许每个点作中转,更新d[i][j]=min(d[i][j],d[i][k]+d[k][j]);可处理负边但不能存在相关负环,时间O(V³)。

无向连通图的最小生成树MST连通全部点、无环、边数V−1,总权最小。Prim从已有点集选最小跨界边,Kruskal按边权递增选不成环的边。非连通图只能得到生成森林。

为什么成立 · 关键推导

最短路径保持的是“到固定起点的距离”;MST选择的是连接割两侧的边。前者得到的树未必总边权最小。Dijkstra若存在负边,已确定距离可能被后来路径改小,贪心证明失效。

入门例题 / 1

无向边AB=1、AC=4、BC=2、BD=5、CD=1。从A:初始B1,C4,D∞;确定B后C3,D6;确定C后D4。最短A到D为A-B-C-D,长4。

典型应用与变式 / 2

同图Kruskal先AB1、CD1,再BC2连接两个分量,选3条边,总4。若选AC4、BD5虽可连通,却成本更高。重权相同可能出现多棵MST。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

最小生成树是否最小化每对节点的路径?

需要一点提示

目标函数是什么?

查看过程、答案与错因

不是,它最小化选中边总权,不保证每对路径最短。

计算与执行过程

有向边A→B=2、A→C=5、B→C=1,Dijkstra求A到C。

需要一点提示

确定B后松弛C。

查看过程、答案与错因

初值C5,经B得到2+1=3,故最短3,路径A→B→C。

条件与错误辨析

一条负边就一定导致Floyd不可用吗?

需要一点提示

区分负边与负环。

查看过程、答案与错因

不一定;无负环可计算最短路径。存在可达负环时,相关最短距离可能无下界。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

Dijkstra(start):
  d[start] ← 0;其他d ← ∞;已确定集合S ← 空
  重复:
    选S外有限d最小的u;若不存在则停止
    u加入S
    对u的出边(u,v,w):
      若d[u]+w<d[v]:更新d[v]与前驱
前提:所有边权非负;未可达点保持∞。

带走这一句

先问要最短一条路,还是最低成本连起所有点。

07 / 非线性结构、查找与排序 · 小节 6

排序过程、稳定性与取舍

读完这一节,你会

手动走一轮排序,按输入特点比较算法。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:顺序查找、二分与散列 · 符号回看

从一个问题开始

成绩相同的人要保留报名先后,选排序方法时要多看哪个指标?

插入排序:扩大有序前缀

插入排序:扩大有序前缀。步骤文字在图下。3位置 01位置 12位置 2
1 / 3

初始只有首项3视为已排序。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

稳定排序保持相同键元素原先的相对顺序。直接插入把当前元素插到已排好前缀;冒泡比较邻项并交换;简单选择每轮找最小换到前面。三者通常O(n²),插入在近乎有序时可高效。快速排序按枢轴分区再递归,平均O(n log n)、最坏O(n²);归并把有序段合并,O(n log n)、数组实现常用O(n)额外空间;堆排维护大根堆,每轮根换到末端再调整,O(n log n)。

希尔排序以递减间隔作插入,复杂度依间隔序列,通常不稳定。基数排序按位或字符分配,要求每趟稳定,适合可分解的键,时间常写O(d(n+r)),d为位数、r为基数。常见稳定实现:插入、冒泡、归并、基数;选择、快排、堆排、希尔一般不稳定。

为什么成立 · 关键推导

先写算法版本再追踪。插入若只移动严格大于当前键的项,可保留同键顺序;归并相等时先取左侧才稳定。快排最坏常来自极端不平衡分区,随机化降低遇到这种输入的风险,但不是取消最坏界。

入门例题 / 1

[3,1,2]插入:初始已排[3];把1前插得[1,3,2];取2移3得[1,2,3]。归并则拆为[3]与[1,2],排序后逐个比较首项合并。

典型应用与变式 / 2

带身份[2a,2b,1]简单选择首轮把1与2a交换,成[1,2b,2a],相等2的顺序颠倒,证明不稳定。只看数字[1,2,2]会看不出这个问题。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

排序正确就一定稳定吗?

需要一点提示

相同值背后还有身份。

查看过程、答案与错因

不一定。正确只要求键有序,稳定还要求同键原相对顺序保持。

计算与执行过程

[4,2,3,1]冒泡从左到右一趟,每次大于就交换,结果?

需要一点提示

大数逐步向右。

查看过程、答案与错因

4与2换→[2,4,3,1],再换3→[2,3,4,1],再换1→[2,3,1,4]。一趟只保证最大值就位。

条件与错误辨析

用归并相等时先取右边,稳定性如何?

需要一点提示

跨两半的同键会谁先输出?

查看过程、答案与错因

可能失稳。左半原先靠前却后输出;相等时先左可保持稳定。

继续实践 · 工具与示范

先按图示和正文用纸笔追踪,再阅读以下伪代码。箭头←为赋值,“若”为条件,“当”为循环;不是可直接编译的C。

insertion(a,n):
  对i=1到n−1:
    value ← a[i];j ← i
    当j>0且a[j−1]>value:
      a[j] ← a[j−1];j ← j−1
    a[j] ← value
严格大于才右移,可保持同键顺序。

对照完整 C / SQL 示例与语法说明 →

带走这一句

比较排序不仅看时间,还看稳定性、空间和输入特征。

07 / 非线性结构、查找与排序 · 小节 7

快速排序与归并:分开,再合起来

读完这一节,你会

按指定版本手算分区与归并,不混用不同伪代码。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:排序过程、稳定性与取舍 · 符号回看

从一个问题开始

两种算法都分而治之,为什么一个主要忙于分区,一个主要忙于合并?

快速排序:末项枢轴的一轮分区

快速排序:末项枢轴的一轮分区。步骤文字在图下。3位置 01位置 12位置 2
1 / 3

[3,1,2],末项2是枢轴;i从0开始。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

快速排序选枢轴,把较小值放一侧、较大值放另一侧,再递归两段。不同分区法中枢轴位置与递归边界不同,题目必须声明版本。本节用末元素为枢轴的Lomuto分区,扫描时把≤枢轴的元素交换到前段,最后放置枢轴;长度0或1不再分。

归并排序先按位置分两半,分别有序后用双指针合并。比较两边首个尚未输出项,相等先左保证稳定;一边耗尽就复制另一边剩余。它与“只把两个数组拼接”不同。典型数组归并O(n log n)时间、O(n)辅助空间;快排递归空间依分区平衡,最坏可O(n)。

为什么成立 · 关键推导

伪代码(闭区间):partition(a,l,r):p←a[r];i←l;对j=l到r−1,若a[j]≤p则交换a[i],a[j]并i加1;交换a[i],a[r];返回i。quick先判断l<r,再递归[l,i−1]与[i+1,r]。合并时每输出一项,仅移动它来源侧指针。

入门例题 / 1

[3,1,2]用末项2:i=0;j0的3不动;j1的1≤2,交换得[1,3,2]、i=1;最后换枢轴得[1,2,3],位置1确定。两侧各一项,不再递归。

典型应用与变式 / 2

合并[1a,3]与[1b,2]:同键先左1a,再右1b,再2,再3,结果[1a,1b,2,3]。选择左优先让原来跨两半的相等元素保序。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

快排一次分区后两侧内部也有序吗?

需要一点提示

分区只保证相对枢轴的关系。

查看过程、答案与错因

不一定。两侧还需递归;只有枢轴在此版本中到达最终位置。

计算与执行过程

[4,2,3,1]末项为枢轴,做一轮上述分区。

需要一点提示

前三项均大于1。

查看过程、答案与错因

扫描没有交换前段,最后a[0]与a[3]换,得到[1,2,3,4],枢轴位置0。本例碰巧全有序不代表所有输入如此。

条件与错误辨析

全部值相等时这个快排版本表现怎样?

需要一点提示

每项都≤枢轴,分区是否平衡?

查看过程、答案与错因

枢轴每轮落最右,子问题为n−1,最坏O(n²)。可考虑三路分区;不能只说平均O(n log n)而忽略重复值。

带走这一句

分治题先写清分区约定,递归边界才不会错。

07 / 非线性结构、查找与排序 · 小节 8

堆、希尔与基数:不同的排序机制

读完这一节,你会

执行堆顶下沉、间隔插入与按位稳定分配。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:快速排序与归并:分开,再合起来 · 符号回看

从一个问题开始

每轮找最大值都重扫全部元素,有没有结构帮忙?

堆排序:只调整仍有效的前缀

堆排序:只调整仍有效的前缀。步骤文字在图下。4位置 02位置 13位置 21位置 3
1 / 3

[4,2,3,1]是大根堆,但整个数组尚未有序。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

大根堆是满足父键不小于孩子的完全二叉树;0起始数组中i的孩子为2i+1与2i+2(若下标<n)。堆序只约束父子,不保证数组整体有序。自底向上对最后一个非叶节点到根下沉,可O(n)建堆;排序每次根换到有效区末尾,缩小有效区,再向下调整,整体O(n log n)。

希尔先以大间隔把跨距元素做插入,逐步缩小间隔,最后gap=1,表现依间隔序列。LSD基数排序从最低位向高位稳定分桶,各趟必须保持同桶原顺序,最后才整体有序;适合这里示范的非负整数,负数处理需另定规则。

为什么成立 · 关键推导

下沉时选择更大孩子与父比较,若孩子更大则交换并继续,否则停止。LSD每趟按0—9桶顺序收集。不能将“桶内随便排”与稳定分配混用;高位相同时,低位已得到的次序必须保存。

入门例题 / 1

大根堆[4,2,3,1]根与末项换,得[1,2,3|4]。有效长度3,较大孩子3与根换,得[3,2,1|4]。再换根与有效末,得[1,2|3,4],下沉为[2,1|3,4],最后完成[1,2,3,4]。

典型应用与变式 / 2

[21,13,12]按个位稳定分桶得[21,12,13],再按十位收集得[12,13,21]。希尔示例[4,3,2,1]先gap2,对(4,2)、(3,1)各插入得[2,1,4,3],再gap1插入完成[1,2,3,4]。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

堆顶最大能推出堆数组从大到小吗?

需要一点提示

兄弟间是否有序?

查看过程、答案与错因

不能。例如[4,2,3,1]是大根堆但2<3,数组并非递减。

计算与执行过程

大根堆[5,3,4,1,2]移出最大后,根换末并下沉一次是什么?

需要一点提示

只在前4项调整。

查看过程、答案与错因

换后[2,3,4,1|5],选更大孩子4交换得[4,3,2,1|5]。

条件与错误辨析

基数排序十位同桶若反转原顺序会怎样?

需要一点提示

个位排序的信息能保住吗?

查看过程、答案与错因

可能错误。12、13同十位桶若被反转成13、12,就破坏最终升序;稳定性在此是正确性的条件。

带走这一句

堆利用父子约束,希尔利用间隔,基数利用稳定的位次处理。

07 / 非线性结构、查找与排序 · 小节 9

用中转点与割边完成图算法

读完这一节,你会

亲手更新距离矩阵并检查生成树的跨界边。

大纲要求的教学展开 · 技术讲解 · 本节来源与考点

前置知识:堆、希尔与基数:不同的排序机制 · 符号回看

从一个问题开始

最短路为什么可能被一个新允许的中转点缩短?

距离由路径累加,不能只看最后一条边

距离由路径累加,不能只看最后一条边。步骤文字在图下。ABCD14251
1 / 3

无向边AB1、AC4、BC2、BD5、CD1;起点A距离0。

原创教学示意 · 手动播放,可随时暂停;折叠或离开小节时停止。

把这件事讲清楚

Floyd以k为外层,把允许的中转点从空集逐步扩成{0,…,k}。每对i,j比较原距离与i→k→j,更新较小者。无边记∞,自身距离0;∞加数仍视作∞。如果计算后d[i][i]<0,说明存在负环的迹象,相关路径不能当作有限最短路。

Prim维护已连入树的顶点集S,从一端在S、另一端不在S的边中选最小者,加入新顶点。它选的是跨界边权,不是起点到新点的累计路径长。连通性不足时会无法继续,应报告森林/非连通,不凭空加边。

为什么成立 · 关键推导

Floyd伪代码:对k,再对i,再对j:若两段可达且d[i][k]+d[k][j]<d[i][j]则更新,并同步记录路径信息。Prim伪代码:从起点S开始;重复选最小跨界边,记录边并扩S;找不到而仍有外点则停止报告不连通。

入门例题 / 1

有向A→B2、B→C1、A→C5。初始A行[0,2,5];允许B作中转后A→C更新为2+1=3;其他未改善项保持。把k循环乱放会破坏“允许中转集合”这一推导。

典型应用与变式 / 2

无向AB1、AC4、BC2、BD5、CD1。Prim从A先AB1,S={A,B},候选AC4,BC2,BD5选BC2;S加入C后选CD1。总4,边与Kruskal可一致但选择过程不同。

停一下,自己试一试

先独立作答;卡住时看提示,完成后再对照解析。

概念判断

Prim可以直接用于任意有向图求同样定义的MST吗?

需要一点提示

本节生成树定义是无向的。

查看过程、答案与错因

不可以直接套用。必须先核对图类型与问题定义,有向最小树形图是另一类问题。

计算与执行过程

A→B=4,B→C=−2,A→C=5,无负环,允许B中转后A→C多少?

需要一点提示

负边可参与Floyd。

查看过程、答案与错因

4+(−2)=2,小于5,更新为2;存在负边不自动意味着不存在最短路。

条件与错误辨析

Prim已选S={A,B},边AB1还能再作为候选吗?

需要一点提示

是否跨割?

查看过程、答案与错因

不能。两端都在S,加入会形成内部冗余甚至环;候选必须恰有一端在S。

带走这一句

距离矩阵看中转集合,生成树看跨界条件。

章末 / 把知识接起来

综合训练

原创综合训练

边AB1、AC4、BC2、CD1、BD5均无向,从A求到D最短路与MST总权。对[2a,2b,1]做简单选择一轮判断稳定性。

需要一点提示

最短路逐点松弛,MST选边避免环;排序保留身份字母。

查看过程、答案与错因

最短A-B-C-D=4;MST选AB、CD、BC总4,两者本题数值相同不代表目标相同。选择排序交换首元素2a与1得到[1,2b,2a],不稳定。

一点一点,积累下来。

今日学习

00:00:00

累计学习

00:00:00

学习天数

0 天

点击“开始计时”后累计时间。同一科目内切换章节或刷新会接续;切换科目不会自动启动另一科。仅当前获得焦点的可见页面累计,离开、关闭或休眠期间不补计。两科的时间与成就分别保存。

记录保存在当前浏览器,关闭后仍保留;清除网站数据会删除记录。每天累计满 1 分钟记为一个学习日,不要求连续打卡。

学习成就

已达成 0 / 10

成就记录投入与阅读进展,不代表掌握程度。阅读类成就随已读标记更新,撤销标记后会重新计算。