数据结构和算法
文章平均质量分 56
DreamBoy_W.W.Y
不愿做菜鸟的小鸟,不断学习,目标是成为老鸟。
展开
-
【数据结构和算法】--RangeSet时间范围管理示例
ImmutableRangeSet是一个不可修改的RangeSet,而TreeRangeSet则是利用树的形式来实现,提供了高效的查询和插入操作。这种自动合并的特性使得RangeSet能够保持范围的不重叠性,从而简化了范围集合的管理。当向RangeSet中添加一个新的范围时,它会遍历范围树,找到与新范围相交或相邻的现有范围,并进行合并。例如,当查询一个元素是否包含在RangeSet中时,可以从树的根节点开始,沿着适当的分支向下遍历,直到找到一个包含该元素的范围或确定该元素不在RangeSet中。原创 2024-05-05 15:09:04 · 442 阅读 · 1 评论 -
【数据结构和算法】--N叉树中,返回某些目标节点到根节点的所有路径
这么多年工作经历中,“数据结构和算法”真的是超重要,工作中很多业务都能抽象成某种数据结构问题。下面是项目中遇到的一个问题。在一个复杂的N叉树目录上,通过模糊搜索只返回搜索到的【要返回完整的从root到目标节点】节点链路,以便外围系统直接使用按照实际操作,模糊搜索只能搜索到需要的几个目标节点数据,但实际业务需要的是这些目标节点到根节点的结构,以便完美展示。N叉树中,找到所有目标节点到根节点的数据,并构建成tree结构返回。原创 2023-09-27 17:19:04 · 1127 阅读 · 0 评论 -
【数据结构和算法】--N叉树返回根节点到目标节点的路径
项目中接触一个问题:在大量有父子关系的列表中,需要筛选出特定约束的数据【要求某个目标节点延续到根节点的数据】。N叉树返回根节点到目标节点的路径。原创 2023-08-03 17:12:45 · 779 阅读 · 0 评论 -
【数据结构和算法】排序算法
这里写目录标题一、排序算法基本概述二、交换类排序--冒泡法三、选择类排序--简单选择排序四、插入类排序--直接插入四、插入类排序--希尔排序一、排序算法基本概述二、交换类排序–冒泡法public void bubbleWay(int a[]){ for(int i =1; i < a.length; i++){ //比较次数 for(int j = 0;j <a.length-i;j++){ if(a[j]原创 2020-08-16 21:07:27 · 94 阅读 · 0 评论 -
【数据结构】二叉搜索树/二叉查找树(BST)和红黑树
一、二叉搜索树介绍二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:1)若左子树不空,则左子树上所有结点的值<=它的根结点的值;2)若右子树不空,则右子树上所有结点的值均>=它的根结点的值;3)左、右子树也分别为二叉排序树;【整体树结构上看,着重的是任意左子树和右子树度要满足上述性质】二叉搜索树数据结构: private class Node<E>{ E data; Node left; Node right;原创 2020-08-29 17:52:20 · 160 阅读 · 0 评论 -
【数据结构和算法】--B树和B+树
说明:由于mysql的InnoDB搜索引擎使用B+树结构存储数据,由此了解基本的B+树知识,以便了解一些技术的原理。要了解B+树,首先要了解下B树/B-树的思想。一、B树1、概念B树是一种自平衡树数据结构,它维护有序数据并允许以对数时间进行搜索,顺序访问,插入和删除。B树是二叉搜索树的一般化,因为节点可以有两个以上的子节点。与其他自平衡二进制搜索树不同,B树非常适合读取和写入相对较大的数据块(如光盘)的存储系统。它通常用于数据库和文件系统。m阶的B树,它必须满足如下条件:每个节点最多只有m个子节原创 2020-09-13 17:10:30 · 104 阅读 · 0 评论 -
【数据结构和算法】--二叉堆(大顶堆和小顶堆)
一、二叉堆介绍二叉堆总是一颗完全二叉树;堆的某个节点的值总是不大于或不小于其节点的值。按照数据的排列方式可以分为两种:最大堆和最小堆。最大堆(大顶堆):父结点的键值总是大于或等于任何一个子节点的键值;最小堆(小顶堆):父结点的键值总是小于或等于任何一个子节点的键值。----------------【一般堆用于查找、删除、插入操作。完成二叉树是从上到下,都是按照节点拥有度为2的思想添加子节点。因此实际二叉堆加入一个元素,需要时刻调整来保证满足上面的性质。】二叉堆数据结构:使用链表List即可。原创 2020-08-29 18:28:57 · 812 阅读 · 0 评论 -
【数据结构和算法】--树(二叉树)
后续对相关树进行整理原创 2020-08-16 21:05:36 · 257 阅读 · 0 评论 -
【数据结构和算法】--双向链表和LRU算法
目录一、双向链表二、LRU算法【最近最少使用算法】一、双向链表数据结构: class Node{ Node pre; Node next; Object value; Node(){} Node(Node pre,Object value,Node next){ this.value =value; this.pre= pre; th原创 2021-04-27 13:34:43 · 151 阅读 · 0 评论