
数据结构与算法
文章平均质量分 89
从小白到精通,逐渐了解数据结构的神秘世界!!
原来如此呀
慢慢学习,不断努力!!!
展开
-
十一、Java数据结构与算法---图的进阶(讲解与代码)
文章目录一、有向图1.1 有向图的定义及相关术语1.2 有向图API设计1.3 有向图实现二、拓扑排序2.1 检测有向图中的环2.1.1 检测有向环的API设计2.1.2 检测有向环实现2.2 基于深度优先的顶点排序2.2.1 顶点排序API设计2.2.2 顶点排序实现2.3 拓扑排序实现三、加权无向图3.1 加权无向图边的表示3.2 加权无向图的实现四、最小生成树4.1 最小生成树定义及相关约定4.2 最小生成树原理4.2.1 树的性质4.2.2 切分定理4.3 贪心算法4.4 Prim算法4.4.1 P原创 2021-08-23 18:55:08 · 1874 阅读 · 0 评论 -
十、Java数据结构与算法---图的基础(讲解与代码)
一、图的入门1.1 图的定义及分类定义:图是由一组顶点和一组能够将两个顶点相连的边组成的特殊的图:自环:即一条连接一个顶点和其自身的边;平行边:连接同一对顶点的两条边;图的分类:按照连接两个顶点的边的不同,可以把图分为以下两种:无向图:边仅仅连接两个顶点,没有其他含义;有向图:边不仅连接两个顶点,并且具有方向;1.2 无向图1.2.1 图的相关术语相邻顶点:当两个顶点通过一条边相连时,我们称这两个顶点是相邻的,并且称这条边依附于这两个顶点。度:某个顶点的度就是依附于该顶原创 2021-08-22 22:22:10 · 424 阅读 · 0 评论 -
九、Java数据结构与算法---并查集(讲解与代码)
一、并查集并查集是一种树型的数据结构 ,并查集可以高效地进行如下操作:查询元素p和元素q是否属于同一组合并元素p和元素q所在的组1.1 并查集结构并查集也是一种树型结构,但这棵树跟我们之前讲的二叉树、红黑树、B树等都不一样,这种树的要求比较简单:每个元素都唯一的对应一个结点;每一组数据中的多个元素都在同一颗树中;一个组中的数据对应的树和另外一个组中的数据对应的树之间没有任何联系;元素在树中并没有子父级关系的硬性要求;1.2 并查集API设计1.3 并查集的实现1.3.1原创 2021-08-21 15:22:36 · 2448 阅读 · 1 评论 -
八、Java数据结构与算法---树的进阶(讲解与代码)
一、平衡树平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。常见的符合平衡树的有,B树(多路平衡搜索树)、AVL树(二叉平衡搜索树)等。之前学习过二叉查找树,发现它的查询效率比单纯的链表和数组的查询效率要高很多,大部分情况下,确实是这样的,但不幸的是,在最坏情况下,二叉查找树的性能还是很糟糕。例如我们依次往二叉查找树中插入9,8,7,6,5,4,3,2,1这9个数据,那么最终构造出来的树是长得下面这个样子:1.1 2-3查找树1.1.1 2-3查找树的定义1原创 2021-08-20 21:38:34 · 365 阅读 · 0 评论 -
七、Java数据结构与算法---优先队列(讲解与代码)
优先队列普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级的,我们需要在这些计算机的任务中找出优先级最高的任务先执行,执行完毕后就需要把这个任务从队列中移除。普通的队列要完成这样的功能,需要每次遍历队列中的所有元素,比较并找出最大值,效率不是很高,这个时候,我们就可以使用一种特殊的队列来完成这种需求,优先队列。优先队列按照其作用不同,可以分为以下两种:最大优原创 2021-08-18 10:32:27 · 383 阅读 · 1 评论 -
六、Java数据结构与算法---堆(讲解与代码)
堆文章目录堆1.1 堆的定义1.2 堆的API设计1.3 堆的实现1.3.1 insert插入方法的实现1.3.2 delMax删除最大元素方法的实现1.3.3 堆的实现代码1.4 堆排序1.4.1 堆构造过程1.4.2 堆排序过程1.1 堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。堆的特性: 1.它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。2.它通常用数组来实现。原创 2021-08-17 19:36:34 · 1114 阅读 · 0 评论 -
五、Java数据结构与算法---二叉树(树的入门)(讲解与代码)
二叉树(树的入门)1.1树的基本定义1.2 树的相关术语1.3 二叉树的基本定义1.4 二叉查找树的创建1.4.1二叉树的结点类1.4.2 二叉查找树API设计1.4.3 二叉查找树实现1.4.4 二叉查找树其他便捷方法1.4.4.1 查找二叉树中最小的键1.4.4.2 查找二叉树中最大的键1.5 二叉树的基础遍历1.5.1 前序遍历1.5.2 中序遍历1.5.3 后序遍历1.6 二叉树的层序遍历1.7 二叉树的最大深度问题1.8 折纸问题...原创 2021-08-16 15:15:07 · 517 阅读 · 0 评论 -
四、Java数据结构与算法---符号表(讲解与代码)
一、符号表符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。1.1 符号表API设计结点类:符号表:1.2 符号表实现1.3 有序符号表...原创 2021-08-15 20:05:44 · 302 阅读 · 0 评论 -
三、Java数据结构与算法---线性表(栈和队列)(讲解与代码)
3 栈3.1 栈概述3.1.1 生活中的栈3.1.2 计算机中的栈3.2 栈的实现3.2.1 栈API设计3.2.2 栈代码实现3.3 案例3.3.1 括号匹配问题3.3.2 逆波兰表达式求值问题4 队列4.1 队列的API设计4.2 队列的实现原创 2021-08-13 10:59:35 · 209 阅读 · 0 评论 -
三、Java数据结构与算法---线性表(链表)(讲解与代码)
2.链表2.1 单向链表2.1.1 单向链表API设计2.1.2 单向链表代码实现2.2 双向链表2.2.1 结点API设计2.2.2 双向链表API设计2.2.3 双向链表代码实现2.2.4 java中LinkedList实现2.3 链表的复杂度分析2.4 链表反转2.5 快慢指针2.5.1 中间值问题2.5.2 单向链表是否有环问题2.5.3 有环链表入口问题2.6 循环链表2.7 约瑟夫问题...原创 2021-08-12 20:43:41 · 708 阅读 · 0 评论 -
三、Java数据结构与算法---线性表(顺序表)(讲解与代码)
1.顺序表1.1 顺序表的实现1.2 顺序表的遍历1.3 顺序表的容量可变1.4 顺序表的时间复杂度1.5 java中ArrayList实现原创 2021-08-10 10:44:46 · 426 阅读 · 1 评论 -
二、Java数据结构与算法---排序(讲解与代码)
一、简单排序1.1 Comparable接口介绍在元素之间进行比较,而Java提供了一个接口Comparable就是用来定义排序规则的,在这里我们以案例的形式对Comparable接口做一个简单的回顾。(同时记住Comparator对应的定制排序方法)**需求:**1.定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则;2.定义测试类Test,在测试类Test中定义测试方法Comparable getMax(Comparable c原创 2021-08-09 09:40:37 · 345 阅读 · 0 评论 -
一、Java数据结构与算法---算法分析(讲解与代码)
算法分析1.1算法的时间复杂度分析计算算法时间耗费情况,分为①事后分析估算方法:使用System.currentTimeMillis()来得到该代码的运行所需时间。②事前分析估算方法:运行所消耗的时间取决于下列因素:1.算法采用的策略和方案;2.编译产生的代码质量;3.问题的输入规模(所谓的问题输入规模就是输入量的多少);4.机器执行指令的速度;下面展示一些 事后分析估算方法举例。public static void main(String[] args) { long start原创 2021-08-05 20:59:47 · 987 阅读 · 1 评论