搜索与图论模板

搜索与图论模板

树与图的存储 树是一种特殊的图,与图的存储方式相同。 对于无向图中的边ab,存储两条有向边a->b, b->a。 因此我们可以只考虑有向图的存储。 树与图的遍历 拓扑排序 时间复杂度O(n+m),n表示点数,m表示边数 朴素dijkstra算法 时间复杂度O(n*n+...

排序_插入排序

排序_插入排序

简述 插入排序思想,假设对数组A[p...r]排序: 维持不变式:设当前排序的元素是 A[q],则保持A[p...q-1]为排好的,A[q]在A[p...q-1]中找到它的位置坐下 复杂度 O(n^2) 原地排序 实现

BFS和DFS

BFS和DFS

BFS 概述 广度优先搜索(Breadth-First Search,简称 BFS)是一种遍历或搜索图或树数据结构的算法 它从根节点开始,沿着树的宽度遍历节点(即先访问同一层级的所有节点,再访问下一层级的节点) 在图中,BFS 从起始节点开始,探索所有邻居,然后依次遍历每个邻居的...

匹配_Rabin_karp匹配算法

匹配_Rabin_karp匹配算法

定义 假设文本是一个长度为n的数组 T[1...n],而模式是一个长度为m的数组P[1...m],其中m<=n。进一步假设P和T的元素都是来自一个有限字母集合M的字符。如M={0,1}或者M={a,b,c,...z}。 字符数组P和T通常称为字符串。 原理 假设 M={0,...

一些变量值交换的方法

一些变量值交换的方法

第三个变量 实现 优点 简单易懂,逻辑清晰 缺点 需要额外的空间来存储临时变量 异或运算 实现 优点 不需要额外的空间 运算只使用基本的逻辑运算,适用于底层硬件编程 缺点 对大多数程序员来说,这种方法不如使用第三个变量的方式直观,容易引起误解 如果 a 和 b 是同一个变量,这种...

动态规划相关

动态规划相关

概述 动态规划(Dynamic Programming,简称 DP)是一种通过分解问题来解决复杂问题的算法技术,特别适用于具有最优子结构性质的问题,即问题的最优解可以由其子问题的最优解构建而成 动态规划的核心思想是将问题分解成更小的子问题,并保存这些子问题的解,避免重复计算,从而...

算法特点、哈希表

算法特点、哈希表

基于算法思想 比较排序 冒泡排序(Bubble Sort): 反复交换相邻的逆序元素 快速排序(Quick Sort): 通过分区交换来排序,递归地对分区进行排序 堆排序(Heap Sort): 利用堆结构进行排序,构建最大堆,然后依次将最大元素移到数组末尾 归并排序(Merge...

贪心算法

贪心算法

概述 贪心算法(Greedy Algorithm)是一种构造性算法,用于解决最优化问题 其核心思想是在每一步选择中,都采取当前状态下最优的选择,期望通过一系列局部最优的选择达到全局最优 贪心算法在许多实际问题中非常有效,但并不是所有问题都适用 特点 局部最优选择 每一步都选择当前...

扫一扫二维码分享