摘要: 一、B树 二叉树只有最多2个分支,B树可以有多个分支,可以理解为"平衡多叉树" B树相对二叉树在于每个节点可存储多个值,这样整体树将变得 ”矮胖“,树的高度比小,这样查询的效率就会变高。 数据库一次读操作以block为单元,一个block一般4K,我们把一个block数据尽量放入一个节点中,就避免数 阅读全文
posted @ 2020-06-04 22:46 蓝天随笔 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 一、二叉搜索树(BST) 每个非叶子节点最多只有左右两个子节点。 左子节点的值 < 父节点的值 右子节点的值 > 父节点的值 层数从1开始, 1、第i层最多有2^(i-1)个节点 2、树高为i层,最多有2^i - 1 个节点 二叉搜索树的遍历: 中序遍历:父节点放在中间 前序遍历:父节点放在前面 后 阅读全文
posted @ 2020-06-02 23:04 蓝天随笔 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 一、区别 给定两个字符串,求LCS 最长公共子串 (Longest Common Substring): 要求是连续的字符串 最长公共子序列(Longest Common Subsequence):要求子字符串相对顺序不变即可 二、动态规划求解 1、最长公共子串 给定两个字符串A 和 B 用二维数组 阅读全文
posted @ 2020-06-01 22:48 蓝天随笔 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 一、算法介绍 SPFA算法(Shortest Path Faster Algorithm)是基于Bellman-Ford算法的优化 Bellman-Ford算法复杂度: O(V*E) (V:点个数 E:边个数) SPFA算法复杂度:O(k*E) k为所有顶点进队的平均次数 缺点:SPFA的算法时间效 阅读全文
posted @ 2020-05-31 18:08 蓝天随笔 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 一、算法介绍 Dijkstra算法不能适用有负权边的情况 1、单源 求某个节点到其他所有节点的最短距离 2、适用有负权边的情况 3、动态规划思想 对经历的边数进行迭代计算(n个节点最多经历n-1次计算,超过n-1次则说明有负权环存在) 第一次迭代 ,从源点出发经历一条边所能达到的最短距离 第二次迭代 阅读全文
posted @ 2020-05-31 18:00 蓝天随笔 阅读(368) 评论(2) 推荐(1) 编辑
摘要: 一、算法介绍 迪杰斯特拉(Dijkstra)算法用于计算一个节点到其他所有节点的最短路径。 1、单源 2、贪心算法 3、适用无负权边的情况 二、算法思想 准备2个集合 S 和 U S保存已经计算好的源节点到此节点最短距离 U保存未计算好最短记录的点 每次从U中取出最小的值,放入S中,其他节点根据此节 阅读全文
posted @ 2020-05-31 17:22 蓝天随笔 阅读(783) 评论(0) 推荐(0) 编辑
摘要: 一、Bean的初始化顺序(3个PostProcessor扩展接口) 总体顺序: 定义 --> 创建 --> 属性注入 --> 初始化 定义:最先执行,在所有Bean创建前可以获取到其元数据信息,如singlon 还是 prototype,以及有哪些属性 创建,属性注入,初始化:如没有依赖其他bean 阅读全文
posted @ 2020-05-13 23:17 蓝天随笔 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 一、使用场景 频繁修改场景下用于求前缀和 前缀积等(区间和可以通过前缀和计算而来) 查询和修改的时间复杂度都是O(logN) 二、原理 如求前缀和 (树桩数组只是存一段区间的统计值,如求前缀和就存这段区间的和;如果求出现次数就存这段区间的数出现的次数) 一个原始数组A 对应一个树桩数组C C[1]= 阅读全文
posted @ 2020-04-10 23:16 蓝天随笔 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 一、使用场景 线段树又叫区间树,也是一种二叉树 场景 1、通常用于求解区间和(积、最大值、最小值)(满足结合律) 2、节点值会不断修改 如下:每个节点至少有2个属性:区间、区间值 二分的思想:每个节点把区间的和保存起来 这样可以在O(logN)时间内查询出区间和 二、线段树构建 由数组递归构建 /* 阅读全文
posted @ 2020-04-07 23:10 蓝天随笔 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 一、稳定性 何为稳定:假设A==B 排序前A再B前面,排序后A依然在B前面,这就是稳定的排序算法 如冒泡排序 插入排序 归并排序可以是稳定的。快速排序 选择排序是不稳定的。 稳定性跟具体算法实现有关:我们说冒泡排序是稳定的 如果我们的冒泡算法判断A>=B 则交换A和B,这种写法那就不稳定了 因为A= 阅读全文
posted @ 2020-03-18 23:34 蓝天随笔 阅读(190) 评论(0) 推荐(0) 编辑