数据结构和算法
文章平均质量分 59
用作数据结构和算法的学习的笔记。记录一些模板、和新学习的算法!!!
妙先森
这个作者很懒,什么都没留下…
展开
-
排序算法之归并排序
java实现归并排序转载 2022-06-17 00:25:52 · 70 阅读 · 0 评论 -
算法-滑动窗口
1. 什么是滑动窗口是一种基于数组的数据结构的算法、本质上是双指针。滑动窗口可以看成数组中框起来的一个部分。在一些数组类题目中,我们可以用滑动窗口来观察可能的候选结果。当滑动窗口从数组的左边滑到了右边,我们就可以从所有的候选结果中找到最优的结果。滑动窗口的左右边界只能向右移动。2. 滑动窗口模板理解并记下来对刷题很有帮助。public int[][] findContinuousSequence(int target) { int i = 1; // 滑动窗口的左边界 int j原创 2021-08-12 21:52:50 · 176 阅读 · 0 评论 -
面试题-为什么索引使用B+树、而不是B树?或者其他红黑树,二叉树
介绍下B树和B+树B树b树是一种平衡多路查找树、相比平衡二叉树它一个节点可以存多个元素、一棵m(m是指一个节点最多有几个子节点)阶的B 树有以下特性:树中根节点若不是子树、必须至少有两个子节点。除根节点和叶子结点其他结点至少有[ceil(m/2)](向上取整、比如m=5,就至少有3个子节点)个节点。节点存储的元素的个数范围是 [ceil(m / 2)-1]<= n <= m-1个B树叶子结点不包含任何元素、也就是null(为空的目的是查到叶子结点表示没有找到返回null)B+原创 2021-08-05 00:32:21 · 369 阅读 · 0 评论 -
排序算法 - 快速排序(java)
原理快速排序有两大核心点,分别为“哨兵划分”和“递归”。哨兵划分:以数组某个元素(一般选取首元素)为 基准数 ,将所有小于基准数的元素移动至其左边,大于基准数的元素移动至其右边。递归:对左子数组 和 右子数组 递归执行 哨兵划分,直至子数组长度为 1 时终止递归,即可完成对整个数组的排序。简单来说就是先以第一元素为基准、对剩余数组元素进行分类把小于基准元素的放在左边、大于的放在右边、然后再将划分好的左右数组看成是相同子问题递归就可以了。实现代码 // 快排 private void原创 2021-07-24 22:41:48 · 142 阅读 · 1 评论 -
红黑树的原理
红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。二叉查找树在插入的元素值是递增的的情况下会退化成链表,这样查找的时间复杂度效率就还是O(n),所以为了在构建一个相对平衡的二叉查找树,就有了红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此,红黑树在业界应用很广泛,比如 Java 中的 TreeMap,JDK 1.8 中的 HashMap、C++ STL 中的 map 均是基于红黑树结构实现的。红黑树的性质每个结点不是红色就是黑色不可能有连在原创 2021-05-25 20:31:46 · 319 阅读 · 0 评论