数据结构
猿小羽
技术本身是不值钱的,只有和业务结合的技术才是值钱的!
技术是为了实现某个业务,进而通过业务赚钱!
展开
-
数据结构 - 图(深度优先与广度优先)
文章目录1.图基本介绍2.图的表示方式2.1 邻接矩阵2.2 邻接表3.图的创建图解3.1 代码实现4.图的深度优先遍历(DFS)算法图解4.1 代码实现5.图的广度优先遍历(BFS)算法图解5.1 代码实现6.图的深度优先 VS 广度优先1.图基本介绍为什么要有图?前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点。当我们需要表示多对多的关系时,这里我们就用到了"图"。图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之原创 2020-11-23 12:43:35 · 1981 阅读 · 0 评论 -
多路查找树的简单介绍
文章目录1.二叉树存在的问题2.多叉树3.B树的基本介绍2-3树4.B树、B+树和B*树4.1 B树4.2 B+树4.3 B*树1.二叉树存在的问题二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树:二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行"i/o"操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响. 问题2:节点海量,也会造成二叉树的高度很大,转载 2020-11-22 17:14:15 · 242 阅读 · 0 评论 -
一篇搞懂二叉排序树与平衡二叉树
文章目录思维导图1.二叉排序树1.1 二叉排序树介绍1.2 二叉排序树(BST)的创建和遍历1.3 二叉排序树删除结点思路图解1.3.1 二叉排序树删除叶子结点1.3.2 二叉排序树删除只有一棵子树的节点1.3.3 二叉排序树删除有二棵子树的结点2.平衡二叉树(AVL树)2.1 平衡二叉树介绍2.2 AVL树左旋转思路图解2.3 AVL树高度求解2.4 AVL树左旋转代码实现2.5 AVL树右旋转思路图解2.5 AVL树右旋转代码实现2.6 AVL树双旋转思路图解2.7 AVL树双旋转代码实现思维导图原创 2020-11-19 22:09:05 · 862 阅读 · 1 评论 -
树结构实际应用一
文章目录1.堆排序1.1 大顶堆和小顶堆图解说明1.2 堆排序基本思想1.3 堆排序的思路图解1.4 代码实现2.赫夫曼树2.1 赫夫曼树创建步骤图解2.2 代码实现1.堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系每个结点的值都小于或等于其左右孩子结点的值转载 2020-11-17 17:05:59 · 322 阅读 · 0 评论 -
树结构基础
文章目录1.二叉树1.1 二叉树的概念和常用术语1.2 前序中序后序遍历二叉树的步骤1.2.1 代码实现1.3 前序中序后序的查找思路图解1.3.1 代码实现1.4 二叉树删除结点的思路图解1.4.1 代码实现2.顺序存储二叉树2.1 顺序存储二叉树的特点2.2 代码实现3.线索化二叉树3.1 线索化二叉树基本介绍3.2线索化二叉树的思路图解3.3 遍历线索化二叉树3.3.1 代码实现1.二叉树为什么需要树这种数据结构?数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可原创 2020-11-13 17:31:01 · 246 阅读 · 0 评论 -
查找算法与哈希表
文章目录思维导图1.线性查找1.1 代码实现2.二分查找2.1 代码实现3.插值查找3.1 代码实现4.斐波那契查找4.1 代码实现5.哈希表思维导图5.1 哈希表基本介绍5.2 哈希表的实现5.3 代码实现思维导图1.线性查找线性查找也叫顺序查找,这是最基本的一种查找方法,从给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。1.1 代码实现/** * 线性查找 * @author xiexu * @create 2020-11-09 3:06 下午 */p原创 2020-11-11 00:37:48 · 312 阅读 · 0 评论 -
彻底搞懂排序算法,看这篇就够了
文章目录1.排序算法的介绍和分类2.算法的时间复杂度和空间复杂度2.1 时间频度忽略常数、低次项、系数的说明2.2 时间复杂度的计算2.3 常见的时间复杂度2.3.1 常数阶O( 1 )2.3.2 对数阶O( log2n )2.3.3 线性阶O( n )2.3.4 线性对数阶O( nlogN )2.3.5 平方阶O( n² )2.3.6 立方阶O( n³ )、K次方阶O( n^k )2.4 算法的平均时间复杂度和最坏时间复杂度2.5 空间复杂度3.冒泡排序3.1 代码实现4.选择排序4.1 代码实现5.插入转载 2020-11-09 12:08:49 · 961 阅读 · 1 评论 -
数据结构之递归解决八皇后问题
文章目录1.递归介绍1.1 递归的概念1.2 递归调用机制1.3 递归能解决什么问题1.4 递归需要遵守的重要规则2.递归-迷宫问题2.1 迷宫问题的思考题3.八皇后问题(回溯算法)3.1 算法思路3.2 代码实现1.递归介绍1.1 递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。1.2 递归调用机制打印问题(重点)public class RecursionTest { public sta原创 2020-11-03 14:17:49 · 375 阅读 · 0 评论 -
数据结构之稀疏数组与环形队列
文章目录1.稀疏数组的应用场景2.稀疏数组转换的思路分析3.稀疏数组的代码实现3.1 课后练习4.队列的应用场景和介绍5.数组模拟队列的思路分析6.数组模拟队列的代码实现7.环形队列的思路分析8.环形队列的代码实现1.稀疏数组的应用场景先看一个实际的需求编写的五子棋程序中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据 -> 稀疏数组稀疏数组的基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏原创 2020-11-03 10:49:23 · 208 阅读 · 0 评论 -
第三章-数据结构之栈
第三章-栈1.栈的基本介绍1.栈的英文为(stack)2.栈是一个先入后出(FILO-First In Last Out)的有序列表。3.栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。4.根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除入栈(push)和出栈(pop)的原创 2020-10-25 23:52:29 · 440 阅读 · 0 评论 -
第二章-数据结构之链表
第二章-链表1.链表(Linked List)介绍1.1 内存结构链表是以节点的方式来存储的,是链式存储每个节点包含 data 域:存放数据, next 域:指向下一个节点链表的各个节点不一定是连续存储,比如a1的地址是150,而next指向的a2地址是110链表分带头节点的链表和没有头节点的链表1.2 逻辑结构链表的逻辑结构虽然看起来像是连续的,但实际上的结构如1.1的内存结构所示,链表的存储空间是不连续的2.链表的应用场景使用带head头的单向链表实现 –水浒英雄排行榜管原创 2020-10-25 15:35:52 · 427 阅读 · 0 评论