跳至主要內容
广度优先搜索

广度优先搜索(Breadth First Search,简称BFS)是一种用于遍历或搜索树或图的算法。它从树的根(或图中的某个节点)开始,探索邻近的节点,然后再对每个邻近节点做同样的操作,层层递进。这个过程持续进行,直到找到目标节点或遍历完所有节点。

BFS的核心思想是使用队列来实现搜索过程。在搜索的每一步中,算法都会取出队列中的第一个节点,检查它是否为目标节点,如果不是,就将其所有未访问过的邻近节点加入队列。这样,队列中的节点就像是在按层次扩展,先进入队列的节点会先被探索。

这种搜索策略不仅可以用来确定从源节点到目标节点是否存在路径,还可以用来找到最短路径,因为在无权图中,BFS首次访问到的路径便是最短路径。


MistyStar...大约 4 分钟算法
深度优先搜索

深度优先搜索算法(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。整个过程反复进行直到所有节点都被访问为止。DFS属于盲目搜索,最糟糕的情况算法时间复杂度为O(n!)。

基本思想是为了求得问题的解,先选择某一种可能情况向前探索;在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索;如此反复进行,直至得到解或证明无解。

(1) 深度优先搜索_百度百科. (2) DFS (深度优先搜索) 算法详解 + 模板 + 例题,这一篇就够了_dfs算法-CSDN博客. (3) 深度优先搜索 - 维基百科,自由的百科全书. (4) DFS(图论) - OI Wiki.


MistyStar...大约 5 分钟算法
排序算法
排序方法 时间复杂度 空间复杂度 稳定性 代码复杂度
最坏 平均 最好
冒泡排序 n^2 n^2 n 1 稳定 简单
直接选择排序 n^2 n^2 n^2 1 不稳定 简单
直接插入排序 n^2 n^2 n^2 1 稳定 简单
折半插入排序 n^2 n^2 n 1 稳定 简单
快速排序 n^2 nlogn nlogn 平均logn,最坏n 不稳定 较复杂
堆排序 nlogn nlogn nlogn 1 不稳定 复杂
归并排序 nlogn nlogn nlogn n 稳定 较复杂

MistyStar...大约 16 分钟算法