![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构(Java)
文章平均质量分 88
数据结构(Java)
迷茫却坚定
这个作者很懒,什么都没留下…
展开
-
12. 图的进阶
有向图是一副具有方向性的图,是由一组顶点和一组有方向的边组成的,每条方向的边都连着一对有序的顶点。由某个顶点指出的边的个数称为该顶点的出度。指向某个顶点的边的个数称为该顶点的入度。由一系列顶点组成,对于其中的每个顶点都存在一条有向边,从它指向序列中的下一个顶点。一条至少含有一条边,且起点和终点相同的有向路径。没有边相连;存在从v到w的边v—>w;存在从w到v的边w—>v;既存在w到v的边,也存在v到w的边,即双向连接;原创 2023-04-23 16:08:23 · 569 阅读 · 0 评论 -
11. 图的入门
*定义:**图是由。原创 2023-04-23 16:07:18 · 612 阅读 · 0 评论 -
10. 并查集
一般像计算机这样网络型的数据,我们要求网络中的每两个数据之间都是相连通的,也就是说,我们需要调用很多次union方法,使得网络中所有数据相连,其实我们很容易可以得出,如果要让网络中的数据都相连,则我们至少要调用N-1次union方法才可以,但由于我们的union方法中使用for循环遍历了所有的元素,所以很明显,我们之前实现的合并算法的时间复杂度是O(N^2),如果要解决大规模问题,它是不合适的,所以我们需要对算法进行优化。并查集中剩余的数目,减去1,就是还需要修建的道路数目;每修一条路,就少一个分组。原创 2023-04-23 16:06:33 · 639 阅读 · 0 评论 -
9. 树的进阶
之前我们学习过二叉查找树,发现它的查询效率比单纯的链表和数组的查询效率要高很多,大部分情况下,确实是这样的,但不幸的是,在最坏情况下,二叉查找树的性能还是很糟糕。 例如我们依次往二叉查找树中插入9,8,7,6,5,4,3,2,1这9个数据,那么最终构造出来的树是长得下面这个样子: 我们会发现,如果我们要查找1这个元素,查找的效率依旧会很低。效率低的原因在于这个树并不平衡,全部是向左边分支,如果我们有一种方法,能够不受插入数据的影响,让生成的树都像完全二叉树那样,那么即使在最坏情况下,查找的效率依旧会很原创 2023-04-23 16:05:34 · 560 阅读 · 0 评论 -
8. 优先队列
在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级的,我们需要在这些计算机的任务中找出优先级最高的任务先执行,执行完毕后就需要把这个任务从队列中移除。 步骤一完成后的结果,虽然我们给每个元素关联了一个整数,并且可以使用这个整数快速的获取到该元素,但是, items数组中的元素顺序是随机的,并不是堆有序的,所以,为了完成这个需求,我们可以增加一个数组int[]pq,来。,pq数组需要堆有序,也就是说,可以获取并删除队列中最小的值。原创 2023-04-23 16:01:47 · 485 阅读 · 0 评论 -
7. 堆的简单学习
堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵。原创 2023-04-23 16:00:04 · 191 阅读 · 0 评论 -
6. 树的入门
树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是。原创 2023-04-23 15:56:30 · 429 阅读 · 0 评论 -
5. 符号表(哈希表)
而在实际生活中,有时候我们需要根据键的大小进行排序,插入数据时要考虑顺序,那么接下来我们就实现一下有序符号表。符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将。要根据键排序,键必须是Comparable的子类或实现类。 刚才实现的符号表,我们可以称之为无序符号表,因为在。,我们可以根据键来查找对应的值。原创 2023-04-23 15:54:30 · 212 阅读 · 0 评论 -
4. 线性表
存储货物或供旅客住宿的地方,可引申为仓库、中转站。例如我们现在生活中的酒店,在古时候叫客栈,是供旅客休息的地方,旅客可以进客栈休息,休息完毕后就离开客栈。原创 2023-04-23 15:51:08 · 463 阅读 · 0 评论 -
3. 排序
由于我们这里要讲排序,所以肯定会在元素之间进行比较。规则的。在实际应用中,我们往往有需要比较两个自定义对象大小的地方。而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的。所以Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系。一般,Java中通过接口实现两个对象的比较,比较常用就是Comparable接口和Comparator接口。原创 2023-04-21 17:33:29 · 578 阅读 · 0 评论 -
2. 算法分析
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随着n的变化情况并确定T(n) 的量级。算法的时间复杂度,就是算法的时间量度,记作:T(n)=O(f(n))。它表示随着问题规模n的增大,算法执行时间 的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度,其中f(n)是问题规模n的某个函数。原创 2023-04-21 14:05:23 · 544 阅读 · 0 评论 -
1. 数据结构与算法概述
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。**大白话:**根据一定的条件,对一些数据进行计算,得到需要的结果。原创 2023-04-21 14:04:44 · 760 阅读 · 0 评论