![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 58
分类专栏简介
人类自救指南
这个作者很懒,什么都没留下…
展开
-
学习笔记:《程序员小灰》B+树(Balance+ Tree)
漫画:什么是B+树?原创 2021-04-23 00:04:27 · 521 阅读 · 0 评论 -
学习笔记:《程序员小灰》B树(B-树,Balance Tree)
漫画:什么是B-树? 定义 一个m阶的B树(Balance Tree,B-树)的特征: 根结点至少有两个子节点; 每个中间节点都包含k-1个元素和k个子节点,其中 m/2 <= k <= m; 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m; 所有的叶子结点都位于同一层; 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个子节点所包含的元素的值域划分。 查找 阶数越大,比较次数越多;高度越小,IO次数约少。 相比单次IO耗时,单次比较耗时几乎可以忽原创 2021-04-23 00:04:06 · 617 阅读 · 2 评论 -
学习笔记:《程序员小灰》平衡二叉树(AVL Tree)
漫画:什么是AVL树?(修订版) 定义: 对于AVL树的每一个结点,平衡因子是它的左子树高度和右子树高度的差值。只有当二叉树所有结点的平衡因子都是-1, 0, 1这三个值的时候,这颗二叉树才是一颗合格的AVL树。 AVL树的左旋、右旋 AVL树的左旋、右旋与红黑树相同。 AVL树的添加、删除 1. 左左局面(LL) 自平衡:右旋。 2. 左右局面(LR) 自平衡:左旋->右旋。 ...原创 2021-04-23 00:03:26 · 182 阅读 · 0 评论 -
学习笔记:《程序员小灰》红黑树(Red Black Tree)
漫画:什么是红黑树?(整合版) 定义: 红黑树(Red-Black Tree,R-B Tree)是一种自平衡的二叉查找树。 在红黑树的每个节点上都多出一个存储位表示节点的颜色,颜色只能是红(Red)或者黑(Black)。 红黑树的特性如下: 每个节点,或者是黑色的,或者是红色的; 根节点是黑色的; 每个叶子节点(NIL)都是黑色的; 如果一个节点是红色的,则它的子节点必须是黑色的; 从一个节点到该节点的子孙节点的所有路径上都包含相同数量的黑色节点。 红黑树的左旋 对a节点进行左旋,指将a节点的右子节点设原创 2021-04-23 00:03:14 · 439 阅读 · 4 评论 -
学习笔记:《程序员小灰》二叉查找树(Binary Search Tree)
漫画:什么是红黑树?(整合版) 定义: 二叉查找树为满足以下条件的树: 若左子树不空,则左子树上所有节点的值均小于或等于它的根节点的值; 若右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值; 左、右子树也分别为二叉查找树。 1 插入操作 在二叉查找树中进行插入操作时只需找到待插入的父节点,将数据插入即可。 2 删除操作 在待删除的节点没有子节点时,直接删除该节点,即在其父节点中将其对应的子节点置空即可。 在待删除的节点只有一个子节点时,使用子节点替换当前节点,然后删除该节点即可。原创 2021-04-23 00:03:47 · 287 阅读 · 4 评论 -
学习笔记:《程序员小灰》二叉堆(Binary Heap)
漫画:什么是二叉堆?(修正版) 定义 二叉堆(Binary Heap)本质上是一种完全二叉树,它分为:最大堆、最小堆。 二叉堆的特征: 最大堆:任何一个父节点的值,都大于等于它左右孩子节点的值。 最小堆:任何一个父节点的值,都小于等于它左右孩子节点的值。 添加 删除 构建 所有节点,依次上浮,或依次下沉。 应用 堆排序、优先级队列。 实现 import java.util.Arrays; /** * 二叉堆 * <p> * 大顶堆 * * @author wgm *原创 2021-04-24 00:09:48 · 328 阅读 · 0 评论 -
学习笔记:《程序员小灰》ConcurrentHashMap
文章目录1 ConcurrentHashMap的底层原理2 调用size()方法时解决一致性问题 1 ConcurrentHashMap的底层原理 HashTable读写时都给整个集合加锁;ConcurrentHashMap使用可重入锁的分段锁技术。 ConcurrentHashMap集合的segments数组中有2的N次方个Segment对象。 两次hash运算:首先定位到Segment,之后定位到Segment内的具体数组下标。 ConcurrentHashMap并发读写: 不同Segment的原创 2021-05-05 12:46:01 · 191 阅读 · 0 评论 -
学习笔记:《程序员小灰》HashMap
文章目录1 为什么要学习HashMap的底层原理?2 1 为什么要学习HashMap的底层原理? 静得下心学习。 对编程的兴趣不是停留在表面。 学习的能力。 企业通过这个筛选招聘。 2原创 2021-05-05 07:20:30 · 343 阅读 · 2 评论 -
学习笔记:《程序员小灰》跳表(SkipList)
漫画:什么是跳跃表? 定义 空间复杂度为O(n)。 添加 抛硬币法。 时间复杂度为O(logn)。 删除 时间复杂度为O(logn)。原创 2021-04-26 00:54:23 · 272 阅读 · 0 评论