Java数据结构与算法
文章平均质量分 89
Java数据结构与算法
陌上人如玉এ
前无颜,后无钱,小小少年,可怜可怜
还未老,想低保,小小年纪,苦恼苦恼
展开
-
Java数据结构与算法(堆)
堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。它通常用数组来实现。具体方法就是将二叉树的结点按照层级顺序放入数组中,根结点在位置1如果一个结点的位置为k,则它的父结点的位置为[k/2],而它的两个子结点的位置则分别为2k和2k+1。这样,在不使用指针的情况下,我们也可以通过计算数组的索引在树中上下移动。......原创 2022-07-24 15:47:11 · 146 阅读 · 0 评论 -
Java数据结构与算法(树的进阶)
2-结点含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-结点含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。红链接均为左链接;没有任何一个结点同时和两条红链接相连;该树是完美黑色平衡的,即任意空链接到根结点的路径上的黑链接数量相同;//存储键publicKeykey;...原创 2022-07-25 15:57:43 · 98 阅读 · 0 评论 -
Java数据结构与算法(符号表)
刚才实现的符号表,我们可以称之为无序符号表,因为在插入的时候,并没有考虑键值对的顺序,而在实际生活中,有时候我们需要根据键的大小进行排序,插入数据时要考虑顺序,那么接下来我们就实现一下有序符号表。符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。...原创 2022-07-23 16:35:11 · 147 阅读 · 0 评论 -
Java数据结构与算法(树的入门)
树(Tree)是n(n>=0)个结点的有限集。当n=0时成为空树,在任意一棵非空树中:- 有且仅有一个特定的称为根(Root)的结点;- 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。...原创 2022-07-24 13:59:25 · 460 阅读 · 0 评论 -
Java数据结构与算法(图的进阶)
有向图是一副具有方向性的图,是由一组顶点和一组有方向的边组成的,每条方向的边都连着一对有序的顶点。由某个顶点指出的边的个数称为该顶点的出度。指向某个顶点的边的个数称为该顶点的入度。由一系列顶点组成,对于其中的每个顶点都存在一条有向边,从它指向序列中的下一个顶点。一条至少含有一条边,且起点和终点相同的有向路径。没有边相连;存在从v到w的边v—>w;存在从w到v的边w—>v;既存在w到v的边,也存在v到w的边,即双向连接;定义定义路径具有方向性;权重不一定等价于距离。...原创 2022-07-29 14:31:20 · 323 阅读 · 0 评论 -
Java数据结构与算法(优先队列)
在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级的,我们需要在这些计算机的任务中找出优先级最高的任务先执行,执行完毕后就需要把这个任务从队列中移除。普通的队列要完成这样的功能,需要每次遍历队列中的所有元素,比较并找出最大值,效率不是很高,这个时候,我们就可以使用一种特殊的队列来完成这种需求,优先队列。为了实现这个目的,在优先队列的基础上,学习一种新的数据结构,索引优先队列。可以获取并删除队列中最小的值。......原创 2022-07-24 22:59:44 · 208 阅读 · 0 评论 -
Java数据结构与算法(并查集)
一般像计算机这样网络型的数据,我们要求网络中的每两个数据之间都是相连通的,也就是说,我们需要调用很多次union方法,使得网络中所有数据相连,其实我们很容易可以得出,如果要让网络中的数据都相连,则我们至少要调用N-1次union方法才可以,但由于我们的union方法中使用for循环遍历了所有的元素,所以很明显,我们之前实现的合并算法的时间复杂度是O(N^2),如果要解决大规模问题,它是不合适的,所以我们需要对算法进行优。如果我们并查集存储的每一个整数表示的是一个大型计算机网络中的计算机,则我们就可以通过。.原创 2022-07-25 23:30:19 · 720 阅读 · 0 评论 -
Java数据结构与算法(图的入门)
定义图是由一组顶点和一组能够将两个顶点相连的边组成的自环即一条连接一个顶点和其自身的边;平行边连接同一对顶点的两条边;按照连接两个顶点的边的不同,可以把图分为以下两种无向图边仅仅连接两个顶点,没有其他含义;有向图边不仅连接两个顶点,并且具有方向;...原创 2022-07-26 15:41:40 · 190 阅读 · 0 评论 -
Java数据结构与算法(排序)
Java提供了一个接口Comparable就是用来定义排序规则的,在这里我们以案例的形式对Comparable接口做一个简单的回顾需求:1.定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则;2.定义测试类Test,在测试类Test中定义测试方法Comparable getMax(Comparable c1,Comparable c2)完成测试学生类:测试方法:结果:排序原理:案例需求:排序前:{4,5,6,3,2,1}排序原创 2022-07-21 23:11:26 · 66 阅读 · 0 评论 -
Java数据结构与算法(线性表)
线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。数据元素之间具有一种“一对一”的逻辑关系。如果把线性表用数学语言来定义,则可以表示为(a1,…ai-1,ai,ai+1,…an),ai-1领先于ai,ai领先于ai+1,称ai-1是ai的前驱元素,ai+1是ai的后继元素线性表中数据存储的方式可以是顺序存储,也可以是链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表。...原创 2022-07-23 16:03:13 · 199 阅读 · 0 评论