数据结构与算法--Java
数据结构与算法
喵先生呢
优秀的人哪都好,唯一的缺点是让人觉得自己是个垃圾。
展开
-
13. 数据结构之图
文章目录数据结构之图1. 为什么要有图2. 基本介绍2.1 图的基本概念3. 图的表示方式☆3.1 邻接矩阵3.2 邻接表4. 图的快速入门5. 图的遍历☆☆5.1 深度优先遍历算法图的深度优先搜索(Depth First Search)深度优先遍历算法步骤代码实现5.2 广度优先遍历算法图的广度优先搜索(Broad First Search)广度优先遍历算法步骤代码实现5.3 深度优先 VS 广度优先☆数据结构之图1. 为什么要有图前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后原创 2020-09-05 22:29:58 · 221 阅读 · 0 评论 -
12. 数据结构之多路查找树
文章目录1. 二叉树与B树1.1 多叉树1.2 B 树的基本介绍1.3 2-3树是最简单的B树结构插入规则234树2. `B 树`、`B+`树和 `B*`树2.1 B 树2.2 B+树对上图的说明2.3 B*树☆1. 二叉树与B树二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如 1 亿), 就存在如下问题问题 1:在构建二叉树时,需要多次进行 i/o 操作(海量数据存在数据库或文件中),节点海原创 2020-09-05 21:42:49 · 398 阅读 · 0 评论 -
11. 数据结构之AVL平衡二叉树
文章目录`AVL`平衡二叉树解决方案--平衡二叉树(`AVL`)1. 基本介绍2. 准备过程创建**`Node`**类和**`AVLTree`**类3. 单旋转(左旋转)**代码实现**4. 单旋转(右旋转)5. 双旋转**解决方案**☆AVL平衡二叉树给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 问题所在:左子树全部为空,从形式上看,更像一个单链表.插入速度没有影响查询速度明显降低(因为需要依次比较), 不能发挥 BST的优势,因为每次还需要比较左子树,其查询速原创 2020-09-05 20:48:03 · 273 阅读 · 0 评论 -
10. 数据结构之BST二叉排序树
二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的 任何一个非叶子节点,要求 左子节点的值比当前节点的值小, 右子节点的值比当前节点的值大。原创 2020-09-04 23:04:43 · 275 阅读 · 0 评论 -
9. 数据结构之哈弗曼树
给定 n 个权值作为 n 个叶子结点,构造一棵二叉树, 若该树的带权路径长度(wpl) 达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。原创 2020-09-03 23:11:58 · 513 阅读 · 0 评论 -
8. 数据结构之顺序储存二叉树
从数据存储来看,数组存储方式和树的存储方式可以相互转换,即 数组可以转换成树, 树也可以转换成数组。顺序二叉树通常只考虑完全二叉树第 n 个元素的左子节点为 2 * n + 1第 n 个元素的右子节点为 2 * n + 2第 n 个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按 0 开始编号如图所示)原创 2020-09-03 21:08:47 · 795 阅读 · 0 评论 -
7. 数据结构之二叉树
文章目录数据结构之二叉树1. 树结构与数据、链表的比较数组存储方式的分析链式存储方式的分析**树存储方式的分析**2. 树结构基础树的常用术语(结合示意图理解):**二叉树的概念**3. 二叉树的遍历3.1 代码实现3.1.1 `HeroNode`部分3.1.2二叉树 `BinaryTree` 部分3.1.3 测试4. 二叉树的遍历查找4.1 代码实现4.1.1 `HeroNode`部分4.1.2 二叉树`BinaryTree` 部分4.1.3 测试5. 二叉树的删除5.1 代码实现5.1.1 `HeroN原创 2020-06-27 22:19:49 · 245 阅读 · 0 评论 -
6. 数据结构之哈希表--并自己实现哈希表
文章目录数据结构之哈希表1. 哈希表的基本介绍2. 需求分析3. 代码实现3.1 构建`Emp`类3.2 创建`EmpLinkedList`表示链表3.3 创建`HashTab`管理多条链表3.4 测试结果☆数据结构之哈希表1. 哈希表的基本介绍 散列表(Hashtable,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2. 需求分析原创 2020-06-20 17:55:38 · 321 阅读 · 0 评论 -
5. 数据结构之栈
文章目录数据结构之栈Stack1. 栈入门1.1 使用数组模拟栈1.2 测试栈2. 栈实现综合计算器(中缀表达式)2.1 思路分析图2.2 创建栈(添加一些方法)2.3 栈实现综合计算机--逻辑3. 栈实现综合计算器(后缀表达式)3.1 逆波兰表达式的计算3.2 中缀表达式转后缀表达式3.3 测试逆波兰计算器☆数据结构之栈Stack栈的应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。处理递归调用:和子程序的调用类似,只是除原创 2020-06-20 17:42:25 · 212 阅读 · 0 评论 -
4. 数据结构之链表
文章目录链表LinkedList1.单向链表1.1 定义HeroNode对象1.2 定义一个单向链表1.3 测试单向链表1.4 求单链表中有效节点的个数(新浪面试题 )1.5 查找链表中的倒数第k个节点(新浪面试题 )1.6 单链表的反转(腾讯面试题)1.7 单向链表的逆序打印(百度面试题)2. 双向链表2.1 定义一个HeroNode2对象2.2 定义一个双向链表2.3 测试双向链表3. 单向循环链表3.1 单向环形链表应用场景3.2 创建一个Boy类3.3 创建环形链表3.4 添加出圈方法3.5 测试☆原创 2020-06-20 17:28:05 · 370 阅读 · 0 评论 -
3. 数据结构之队列--详细剖析
文章目录队列queue1. 单向队列1.1 测试单向队列2. 环形队列2.1 测试循环队列`☆`队列queue队列是一个 有序列表,可以用 数组或链表来实现,遵循 先入先出 的原则。队列是一种数据结构,Java中也有对其具体的实现,如果您有兴趣可以看一下这篇文章:Java队列Queue使用详解,下面我们通过数组来实现队列的功能,帮助我们更好地理解队列这个数据结构的特点。1. 单向队列public boolean isFull();判断队列是否满rear == maxSize - 1原创 2020-05-20 21:54:24 · 209 阅读 · 0 评论 -
2. 数据结构之稀疏数组--详细过程
文章目录稀疏数组 SparseArray1. 案例分析2. 代码实现2.1 二维数组转存为稀疏数组2.2 从`map.data`中读取数据,并将其还原成二维数组稀疏数组 SparseArray1. 案例分析稀疏数组和二维数组,使两种数据结构可以轻松的转换,从而实现五子棋程序中有存盘和续上盘的功能。规约:棋盘没有放棋子为0,白子为1,黑子为2当一个二维数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。下面是稀疏数组储存数据的结构:记录数组 一共有几行几列,有多少个原创 2020-05-15 22:31:23 · 266 阅读 · 0 评论 -
1. 数据结构与算法概述
文章目录1. 数据结构概述2. 数据结构包括2.1 线性结构2.2非线性结构1. 数据结构概述数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以 编写出更加漂亮,更加有效率的代码。要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决程序 = 数据结构 + 算法数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位2. 数据结构包括线性结构和非线性结构。2.1 线原创 2020-05-13 07:18:56 · 175 阅读 · 0 评论
分享