摘要:
这次我们来看看如何使用多叉树来处理数据。现在我们有一些集合我们要执行每次合并两个集合的操作,或者查询两个元素是否在同一个集合的操作我们就能够使用这种数据结构——并查集。一开始我们将每个集合中的元素都抽象成树中的点,并在每个集合中选出一个元素当做代表元,让这个集合中其他所有的点都以代表元这个点作为父节 阅读全文
摘要:
如果我们一开始就有n个数据,如何将他们快速的建立一个堆,当然我们可以将堆从空一直执行插入操作,这样的算法的复杂度为O(log1+log2+…+logn)经过数学计算这个复杂度是O(nlogn)的。接下来我们介绍一种快速的建立堆的方法,按照数据的顺序直接将他们放入树中,接下来我们从第n/2个数据开始判 阅读全文
摘要:
如果现在在我们面前有一堆的数据然后我们想支持查询这些数据中最小的那个数据,新增加一个数据,删除最小的数据,这时我们将可以使用堆这个数据结构。 首先我们先来看看堆的样子。堆是一个完全二叉树,对于每一个二叉树上的节点满足这个节点上的数据小于他的儿子节点上的数据(如果这个节点有儿子),这样构成的数据结构叫 阅读全文
摘要:
这次我们介绍线性表栈和队列。 栈:栈在我们日常的程序中也十分常见,在我们的函数调用中,栈充当了一个很重要的数据结构,在系统维护的栈中保存了各个函数执行完后应该返回的位置,既然它这么厉害既让我们看看他究竟是什么吧。栈又叫先进后出表,它能够将先进入栈中的元素“压”在后进入栈中的元素的下面,只有将压在一个 阅读全文
摘要:
数据结构在我们的日常编程和日常生活中无处不在,我们今天就来看看其中最简单也是最基本的一种数据结构——线性表。 线性表:就是以线性的方式组织和管理我们数据,换句话说就是将我们的数据一个一个的排起来。如果一个数据x排在另一个数据y的前面,我们称x是y的前驱,y是x的后继。这样我们就可以发现线性表的最基本 阅读全文