![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法(Java语言描述)
文章平均质量分 86
heyanxi0101
Let nature take its course!
展开
-
堆排序
· 堆数据结构的效率使它引出一种出奇简单,却很有效率的排序算法,称为堆排序。· 堆排序的基本思想是使用普通的 insert()例程在堆中插入全部无序的数据项,然后重复用remove()的例程,就可以按序移除所有的数据项。ForExample:for (j=0; j<size; j++) theHeap.insert(anArray[j]); // 将没有排序...原创 2018-04-07 23:05:05 · 220 阅读 · 0 评论 -
链表-01
引入: 我们在学习数组这种数据结构的时候,可能会发现这种数据结构存在着一定的缺陷。在无序数组中搜素是低效的;而在有序数组中插入效率又很低,不管在哪一种数组中删除的效率都是很低的。而且数组一旦创建之后,它的大小是不可改变的。链表的出现就可以解决上面出现的一些问题。链表的机制灵活、用途广泛、适用于许多通用的数据库、在某种程度上是可以取代数组的。 链结点: 在链表中每个数据项都被包含原创 2017-12-01 00:14:17 · 220 阅读 · 0 评论 -
链表-02
此篇续着01篇,为基本链表的一些拓展好我们继续使用链表实现栈:/*使用链表实现栈操作*/public class LinkStack { public LinkList list = new LinkList(); // 用链表的向前插入数据 模拟压栈操作 public void push(long dd) { list.insertFirst(dd); } //原创 2017-12-01 00:26:56 · 215 阅读 · 0 评论 -
递归
递归是一种方法(函数)调用自己的编程技术。知道递归这两个字的时候是在大学生活时代的C语言的课堂上,当时老师提到了递归,说这是一种一个函数自己调用自己的方法,然后就非常感兴趣,感觉非常的神奇,但是当自己实际用到的时候,却怎么都理解不了他的好处,它是怎么实现之类的,就不像 if-else 语句这种,学的时候就可以在大脑中刻画一个流程图出来,然后可以很快的理解,所以当时出于对知识的敬畏,就没有在深入研究原创 2018-03-17 16:36:33 · 364 阅读 · 0 评论 -
二叉树
二叉树:顾名思义就是每个节点都只能有两个子节点的树结构。为什么要使用树这种结构呢?树结构通常结合了另外两种数据结构的优点:一种是有序数组,另外一种是链表。 树结构的查询的速度和有序数组一样快,树结构的插入数据和删除数据的速度也和链表一样快。 树的术语: Name Function 路径 顺着连接点的边从一个节点走向另一个节点,所经过的节点的顺序排...原创 2018-03-17 16:48:44 · 17934 阅读 · 1 评论 -
红黑树
引入: 结合上一篇普通的二叉树作为数据工具有着重要的优势:可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是,二叉树同时也存在一个很麻烦的问题,如果二叉树中插入的是随机数据,则执行小姑很好,但是如果插入的是有序数据(1,2,3,4,5)或者是逆序数据(5,4,3,2,1),速度就和变得特别的慢。因为当插入的数据为有序的话,那么二叉树就是非平衡的了。而对于非平衡的二原创 2018-03-18 19:20:10 · 189 阅读 · 0 评论 -
简单排序
一旦建立了一个数据库之后,就可能需要根据某些需求对数据进行不同方式的排序。计算机和人类的的区别就是计算机不能向人这样通览所有的数据,它只能根据计算机的“比较”操作原理,在同一时间对两个队员进行比较。在人类看来很简单的事情,计算机的算法却不能看到全景,因此它只能一步一步的解决具体问题和遵循一些简单的规则。 下面说的...原创 2018-03-28 16:43:48 · 220 阅读 · 0 评论 -
234树
引入 在二叉树中,每个节点有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree)。 2-3-4树,就是多叉树,它的每个节点最多有四个子节点和三个数据项。首先,2原创 2018-03-30 01:25:20 · 9647 阅读 · 4 评论 -
外部存储
引入: 2-3-4树是多叉树的例子,多叉树是值节点的子节点多于两个并且数据项多于一个。另外一种多叉树,B-树,尚在外部存储器上的数据时,它起很大的作用。外部存储,通俗一点就是我们经常使用的电脑中的硬盘。访问外部数据: 之前学习的所有数据结都都是假设数据存储在主存中(RAM,随机访问存储器)。但是,在实际情况下有时要处理的数据量太大,不能存储在主存中。这时候我们就需要一种外部存储方原创 2018-04-01 15:39:52 · 500 阅读 · 0 评论 -
哈希表
引入: 哈希表是一种数据结构,它可以提供快速的插入操作和查找操作。哈希表有非常多的优点,不论哈希表中有多少数据,插入和删除数据只需要接近常量的时间,即O(1)时间级。 哈希表同样叶存在这一些缺点:它是基于数组的,数组创建后难以扩展。某些哈希表被基本填满...原创 2018-04-02 19:16:49 · 798 阅读 · 0 评论 -
堆
引入 首先,现在说得的堆不是内存得一片区域,而是一种数据结构。 在说堆之前我们可以先复习一下之前学习的优先级队列,我们之前的优先级队列,使用数组实现的,虽然实现优先级队列可以有很多不同的内部结构。这种实现方式,岁然删除最大项的时间为O(1),但是插入的...原创 2018-04-06 11:02:50 · 232 阅读 · 0 评论 -
最小生成树
最小生成树 借着上图,我们看到同样是连接五个点,左边得图形使用了10条边。而右边的图形使用了5条边,他们之间只有最少数量的边保证他们被连通。这组成了最小生成树(MST)。 对给定的一组顶点,可能有很多种最小生成树。比如,上图中的右边的图形是用边AB...原创 2018-04-11 10:05:07 · 170 阅读 · 0 评论 -
图
图 · 用于堆数据间关系进行编码的以一种机制 · 图是一种与树有些相像的数据结构。实际上,从数学意义上来说,树是图的一种。 · 上图就是一个原创 2018-04-11 00:13:10 · 536 阅读 · 0 评论 -
栈和队列
引入: 相比我们之前学习的数组,之前在一个数组中我们若是知道了一个数组中的某个数据的下标即可以立即的访问这个数据, 或者可以使用一个循环结构访问到每一项数据。 但是在本次学习的过程中,我们学习的这种数据结构,他的访问是受限制的,即在特定的时刻只有一个数据项可以被访问或者删除。原创 2017-11-21 21:12:49 · 439 阅读 · 0 评论