![](https://img-blog.csdnimg.cn/20200219193327595.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 93
Java语言实现,底层实现大量的数据结构
曲怪曲怪
有故事的哈尔滨---- 广东
展开
-
Java底层 RedBlackTree 红黑树
RedBlackTree 红黑树文章目录1、2-3 树1.1、2-3 树的基本结构1.2、2-3树添加元素2、红黑树与2-3树的等价性3、红黑树之增加元素3.1、向 2节点中添加元素3.2、向 3节点中添加元素3.3、总结3、红黑树的实现3.1、内部类的实现3.2、基本结构以及函数实现3.3、增加元素时间复杂度分析最后1、2-3 树红黑树和2-3书有着等价的关系。我们了解了红黑...原创 2020-04-14 19:40:41 · 195 阅读 · 0 评论 -
Java 底层实现 HashTable 哈希表
HashTable 哈希表文章目录1、什么是哈希表2、哈希函数的设计原则2.1、整型2.2、浮点型2.3、字符串2.3、Java 中的 hashCode()3、哈希冲突的处理——链地址法4、HashTable的实现4.1、初始化操作4.2、哈希函数4.3、增删改查操作5、动态空间处理5.1、初始化操作5.2、resize 更改容量操作5.3、更新增删改查操作6、时间复杂度分析6.1...原创 2020-03-18 21:56:30 · 396 阅读 · 0 评论 -
Java底层实现 AVL 平衡二叉树
AVL 平衡二叉树文章目录1、为什么要有AVL平衡二叉树2、什么是AVL平衡二叉树3、AVL树的基本实现3.1、实现的方法3.2、构造函数3.3、基本成员函数4、左旋转和右旋转4.1、LL 右旋转4.2、RR 左旋转4.3、LR 左右旋转4.4、RL 右左旋转4.5、四种情况总结5、增删改查操作的实现5.1、添加操纵5.2、删除操作5.3、查询操作5.4、更改操作最后1、为什么要...原创 2020-03-15 22:00:18 · 151 阅读 · 0 评论 -
Java底层实现 Trie 字典树
Trie 字典树文章目录1、什么是字典树2、Trie字典树节点信息3、Trie字典树的实现3.1、Trie构造函数的实现3.2、添加元素3.3、查询操作3.4、前缀搜索最后1、什么是字典树 字典树是一种专门处理字符串设计的一种数据结构。我们先来说一下他的优点。在这里呢我们跟之前的讲的二分搜索或者其他树结构进行比较。 我们知道,我们采用树结构进行查询操作时,时间复杂度为O(...原创 2020-03-13 16:54:47 · 216 阅读 · 0 评论 -
Java底层实现 SegmentTree 线段树
SegmentTree 线段树(区间树)文章目录1、为什么使用线段树2、线段树的基本结构2.1、线段树的一般结构2.2、线段树存储所需空间3、线段树的实现3.1、Merge 函数3.2、构造函数3.3、基本操作函数3.4、构建线段树3.5、查询操作3.6、更改操作最后1、为什么使用线段树 相信大家都见过一个经典的比赛题目(区间染色):在一个数组结构当中,对某一端区间不断的进行...原创 2020-03-10 19:34:59 · 289 阅读 · 0 评论 -
Java底层实现PriorityQueue 优先队列
PriorityQueue 优先队列基于MaxHeap最大堆文章目录1、什么是优先队列2、什么是二叉堆2.1、实现方法2.2、初始化操作2.3、添加元素2.4、提取最大值2.5 查询操作2.6、replace操作2.7、Heapify数组堆化3、优先队列的实现——基于二叉堆最后1、什么是优先队列 优先队列也是一种队列,它的接口函数和队列相同。public interfac...原创 2020-03-05 21:35:40 · 962 阅读 · 0 评论 -
Java底层实现UnionFind 并查集
Java底层实现UnionFind 并查集文章目录1、什么是并查集2、并查集实现(版本一)2.1、判读是否连接2.2、连接两个节点3、并查集的实现(版本二)3.1、初始化函数3.2、判断是否连接3.3、连接两个节点4、并查集的实现(版本三)——基于size进行优化4.1、初始化操作4.2、判断是否连接4.3、连接两个节点5、并查集的实现(版本四)——基于rank进行优化5.1 初始...原创 2020-02-29 19:02:31 · 341 阅读 · 0 评论 -
Java底层实现Map映射——基于链表和二分搜索树
Java底层实现Map映射基于链表和二分搜索树文章目录1、什么是映射2、映射类的实现——基于链表2.1、增加元素2.2、删除元素2.3、改变元素2.4、查询操作3、映射类的实现——基于BST二分搜索树4、时间复杂度分析最后1、什么是映射 无论是集合还是映射,都是来源于数学当中,在数学领域映射指两个元素的集之间元素相互“对应”的关系。映射也分很多种,满射,单射,一一映射等三种...原创 2020-02-23 21:24:21 · 150 阅读 · 0 评论 -
Java底层实现基于链表和二分搜索树的Set集合
Set 集合基于链表和二分搜索树文章目录1、什么是集合2、集合类的实现——基于链表2.1、接口函数实现2.2、基本操作函数2.2、增加元素2.3、删除元素2.4、查询元素3、集合类的实现——基于二分搜索树3.1、基本操作函数3.2、增加元素3.3、删除元素3.4、查询元素4、时间复杂度分析最后1、什么是集合 数学上定义为由一个或多个确定的元素所构成的整体。但是在计算机领域,...原创 2020-02-22 19:50:01 · 306 阅读 · 0 评论 -
Java底层实现BST二分搜索树
BST 二分搜索树文章目录1、什么是树1.1、什么是二叉树1.2、什么是二分搜索树2、二分搜索树的基本函数2.1、添加元素2.2、查询元素2.2.1 contains操作2.2.2 最大值和最小值函数2.3、改变元素2.4、遍历元素2.4.1 前序遍历2.4.2 中序遍历2.4.3 后序遍历2.4.4 层序遍历2.5、删除元素2.5.1 删除最小值元素2.5.2 删除最大值元素2....原创 2020-02-21 19:24:27 · 271 阅读 · 0 评论 -
基于数组和链表Java底层实现Queue队列和循环队列
Queue 队列文章目录1、什么是队列2、Queue数据结构实现——基于动态数组2.1、基本函数实现2.2 进出队列函数2.3 查询操作3、Queue数据结构实现——基于链表函数3.1、基本函数实现3.2 进出队列函数3.3 查询操作4、LoopQueue循环队列的实现4.1、基本函数实现4.2、进出队列函数4.3、查询操作5、时间复杂度分析最后1、什么是队列同 Stack 一...原创 2020-02-20 20:43:23 · 517 阅读 · 0 评论 -
Java底层实现 Array 动态数组
Array动态数组文章目录1、Array概述2、Array数组实现思路2.1、增2.2、删除元素2.3、改变元素2.4、查找元素3、时间复杂度分析4、解决时间复杂度震荡的办法5、Array具体实现函数公有方法私有方法1、Array概述 同数组不用,数组的大小在定义时已经确定,而在实际过程中数组需要根据数据量的大小自动更改数组大小。底层实现仍是数组,只是将数组进行封装,可以实现自...原创 2020-02-15 22:49:24 · 476 阅读 · 0 评论 -
Java底层实现基于数组和链表的 Stack 栈
Stack 栈1、Stack栈概述 栈这个数据结构有着自己的性质,也就是 先进后出,后进先出 的结构。最经典的就是调用函数这一块。不断向栈中加入缓存,最后执行完的函数会回调用放在栈顶的缓存。和它类似的就是队列的数据结构。队列有着先进先出,后进后出的结构。两者应用不同的场景。 这里将栈设计为Java接口,目的是实现栈的底层有很多。例如数组、链表、二叉树等等。他们都将调用这个...原创 2020-02-17 19:13:12 · 764 阅读 · 0 评论 -
Java底层实现LinkedList 链表
LinkedList 链表目录1、什么是链表1.1、同数组的区别1.2、节点的实现2、链表的方法实现2.1、增加元素2.2、删除元素2.3、改变元素2.4、查询元素3、时间复杂度分析最后1、什么是链表链表,使用“链子”将数据组合起来,这里的链子指的就是引用或者指针。链子存储在哪里呢?节点(Node)中,我们把节点封装在类中。即class Node{ E e; ...原创 2020-02-19 18:10:58 · 355 阅读 · 0 评论