算法

分块查找算法介绍与实现

分块查找算法介绍与实现1.算法简介分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况,其核心有二索引表,二是分块处理。分块查找要求把一个大……

基数排序算法C/C++代码图文讲解

基数排序算法C/C++代码图文讲解基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。(1)……

字符串的KMP算法详解及C/C++代码实现

字符串的KMP算法详解及C/C++代码实现1.原由紧接上文,我们知道了暴力匹配的算法在时间运行上的缺陷,假设字符串T的长度为n,字符串P的长度为m,则整个算法的时间复杂度为O(n*m),而对于一个复杂的现实情况而言n>&……

二分答案算法实例讲解

二分答案算法实例讲解本篇内容讲解二分答案,并通过实例分析和解决问题,在一些解题中,二分答案往往在一个单调闭区间上进行,也就是说,二分答案最后得到的答案应该是一个确定值,而不是像搜索那样出现多解的情况。那么什么时候适用二分……

悬线法实例讲解

悬线法实例讲解先说说什么是悬线?就是一条竖线,这条竖线有初始位置和高度两个性质,可以在其上端点不超过当前位置的矩形高度的情况下左右移动。一、概述悬线法的适用范围是单调栈的子集。具体来说,悬线法可以应用于满足以下条件……

网络流常用小技巧拆点

网络流常用小技巧拆点拆点是一种图论建模思想,常用于网络流,用来处理点权或者点的流量限制的问题,也常用于分层图。一、什么是拆点?什么是拆点?拆点就是将一个点拆成入点和出点两个点,并在两个点之间建一条边。为什么要拆点?拆点是……

C++STL之Vector容器

C++STL之Vector容器1.概念Vector可以翻译为向量,或向量数组,至于为什么以向量命名,可以理解为一维空间也是存在向量的。Vector是最简单的序列是容器,就像数组一样,向量使用连续的存储位置作为元素,这意味着它们的元……

记忆化搜索实例讲解

记忆化搜索实例讲解什么是记忆化搜索?记忆化搜索在本质上,还是动态规划,只是实现方式采用了深度优先搜索的形式,但是它不像深度优先搜索那样重复枚举所有情况,而是把已经计算的子问题保存下来,这样就和动态规划的思想不谋而合了。……

KMP算法与前缀函数实例讲解

KMP算法与前缀函数实例讲解KMP算法与前缀函数(一)前缀函数一个字符串s的border是一个最长的字符串,且既是s的后缀,又是s的真前缀。给定长为n的字符串s,其前缀函数定义为一个长为n的数组π。其中π[i]为s的……

树的遍历之中序遍历二叉树

树的遍历之中序遍历二叉树1.简介依旧是下面的这三句话:先序遍历:根左右中序遍历:左根右后序遍历:左右根      &……