数据结构
文章平均质量分 94
计算机基石
数据Ai指北
这个作者很懒,什么都没留下…
展开
-
数据结构——图的遍历算法
图的遍历算法上一篇我们了解了图的基本概念、术语以及存储结构,还对邻接表结构进行了模拟实现。本篇我们来了解一下图的遍历,和树的遍历类似,从图的某一顶点出发访问图中其余顶点,并且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Graph)。如果只访问图的顶点而不关注边的信息,那么图的遍历十分简单,使用一个foreach语句遍历存放顶点信息的数组即可。但是,如果为了实现特定算法,就必须要根据边的信息按照一定的顺序进行遍历。图的遍历算法是求解图的连通性问题、拓扑排序和求解关键路径等.转载 2020-12-08 13:47:54 · 477 阅读 · 0 评论 -
来吧!一文彻底搞定哈希表!
哈希表:讲得非常通俗易懂https://blog.csdn.net/sinat_33921105/article/details/103344078原创 2019-12-24 11:32:49 · 290 阅读 · 0 评论 -
图的基本概念详解
一、前言从今天开始就给大家分享有关于图的概念和代码啦,不知道大家有没有看够树的相关内容呢?以后还会慢慢给大家再分享的,代码要一遍一遍过,一轮一轮学习。第一轮树就先到这里,等第二轮还会给大家分享的。图应该是数据结构中处于霸王地位的一部分了,图会涉及到图论的相关知识,咱们现在还涉及不到,等到以后分享数学基础,讲离散数学的时候,会给大家分享有关图论的内容。为什么称图是霸王地位呢?因为图应该是...转载 2019-12-11 21:59:41 · 634 阅读 · 0 评论 -
java队列(Queue)用法总结
1.队列的特点队列是一种比较特殊的线性结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中最先插入的元素也将最先被删除,对应的最后插入的元素将最后被删除。因此队列又称为“先进先出”(FIFO—first in first out)的线性表,与栈(FILO-first in last out)刚好相...转载 2019-12-03 21:52:26 · 805 阅读 · 0 评论 -
图的遍历(深度优先遍历和广度优先遍历)
图的遍历就是从图中某个顶点出发,按某种方法对图中所有顶点访问且仅访问一次。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础深度优先遍历(depth-first search):类似于树的先根遍历,是树的先根遍历的推广 广度优先遍历(breadth-first search):遍历类似于树的层次遍历,它是树的按层遍历的推广--------------------- ...转载 2019-01-16 14:26:41 · 394 阅读 · 0 评论 -
斐波那契额数列
一、斐波那契数列由于斐波纳挈数列是以兔子的繁殖引入的,因此也叫“兔子数列”。它指的是这样一个数列:0,1,1,2,3,5,8,13......从这组数可以很明显看出这样一个规律:从第三个数开始,后边一个数一定是在其之前两个数的和。在数学上,斐波纳挈数列可以以这样的公式表示:F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2),(n>=2)二、斐波纳挈数列的...转载 2019-01-16 15:24:54 · 2593 阅读 · 0 评论 -
数据结构
数据结构 (不是建筑结构、人体结构) 数据结构(data structure )是指相互之间存在一种或多种特定关系的数据元素的集合。是组织并存储数据以便能够有效使用的一种专门格式,它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。由于信息可以存在于逻辑思维领域,也可以存在于计算机世界,因此作为信息载体的数据同样存在于两个世界中。表示...原创 2019-03-15 15:35:40 · 234 阅读 · 0 评论 -
层次遍历二叉树和采用栈的方式遍历二叉树
//中序遍历非递归 @Override public void inOrderByStack() { System.out.println("中序遍历非递归操作"); //创建栈 Deque<Node> stack=new LinkedList<Node>(); Node current=root; while(current!=null||!s...转载 2019-01-15 11:53:29 · 934 阅读 · 0 评论 -
算法的空间复杂度
空间复杂度(Space Complexity)) 算法的存储量包括: 1.程序本身所占空间 2.输入数据所占空间; 3.辅助变量所占空间 输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占额外空间。 空间复杂度是对一个算法在运行过程中临时占用的存储空间大小的...原创 2019-01-11 09:28:51 · 5170 阅读 · 0 评论 -
数据结构中线性表的介绍
线性表(linear list) )线性表是n个类型相同数据元素的有限序列,通常记作(a 0 , a 1 , …a i-1 , a i , a i+1 …,a n-1 )。1.相同数据类型在线性表的定义中,我们看到从a 0 到a n-1 的n个数据元素是具有相同属性的元素。比如说可以都是数字,例如(23, 14, 66, 5, 99);也可以是字符,例如(A, B, C, … Z);...转载 2019-01-10 23:02:24 · 454 阅读 · 0 评论 -
算法的时间复杂度
https://www.cnblogs.com/fanchangfa/p/3868696.html时间复杂度(Time Complexity))定义 时间频度:一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试。一个算法花费的时间与算法中语句...原创 2019-01-10 22:56:28 · 372 阅读 · 0 评论 -
数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)
数据的逻辑结构数据的逻辑结构指数据元素之间的逻辑关系(和实现无关)。分类1:线性结构和非线性结构线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。线性表就是一个典型的线性结构,它有四个基本特征: 1.集合中必存在唯一的一个"第一个元素";2.集合中必存在唯一的一个"最后的元素";3.除最后元素之外,其它数据元素均有唯一的"后继";...原创 2019-01-10 22:53:42 · 8058 阅读 · 0 评论 -
算法的概念
算法(algorithm )是指令的集合,是为解决特定问题而规定的一系列操作。它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。一个算法通常来说具有以下五个特性:输入:一个算法应以待解决的问题的信息作为输入。输出:输入对应指令集处理后得到的信息。可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。有穷性:算法执行的指令个数是有...转载 2019-01-10 22:47:50 · 476 阅读 · 0 评论 -
冒泡排序
1.1 原理 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最...原创 2018-10-27 23:46:18 · 248 阅读 · 0 评论 -
双向链表与循环链表
双向链表单链表的一个优点是结构简单,但是它也有一个缺点,即在单链表中只能通过一个结点的引用访问其后续结点,而无法直接访问其前驱结点,要在单链表中找到某个结点的前驱结点,必须从链表的首结点出发依次向后寻找,但是需要Ο(n)时间。为此我们可以扩展单链表的结点结构,使得通过一个结点的引用,不但能够访问其后续结点,也可以方便的访问其前驱结点。扩展单链表结点结构的方法是,在单链表结点结构中新增加一...转载 2019-01-12 01:09:50 · 211 阅读 · 0 评论 -
二叉树遍历概念和算法
二叉树的遍历:遍历(Traverse):就是按照某种次序访问树中的所有结点,且每个结点恰好访问一次。也就是说,按照被访问的次序,可以得到由树中所有结点排成的一个序列。树的遍历也可以看成是人为的将非线性结构线性化。这里的“访问”是广义的,可以是对结点作各种处理,例如输出结点信息、更新结点信息等。在我们的实现中,并不真正的“访问”这些结点,而是得到一个结点的线性序列,以线性表的形式输...转载 2019-01-14 17:31:13 · 204 阅读 · 0 评论 -
二叉树
二叉树:每个结点的度均不超过 2 的有序树,称为 二叉树(binary tree) 。与树的递归定义类似,二叉树的递归定义如下:二叉树或者是一棵空树,或者是一棵由一个根结点和两棵互不相交的分别称为根的左子树和右子树的子树所组成的非空树。由以上定义可以看出,二叉树中每个结点的孩子数只能是 0、1 或 2 个,并且每个孩子都有左右之分。位于左边的孩子称为左孩子,位于右边的孩子称为右孩...转载 2019-01-14 17:24:24 · 303 阅读 · 0 评论 -
树的概念
树树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。树的结点包含一个数据元素及若干指向其子树的若干分支。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根。我们可以形式地给出树的递归定义如下:树(tree )是 n(n ≥ 0)个结点的有限集。它1) 或者是...转载 2019-01-12 13:11:02 · 229 阅读 · 0 评论 -
队列(queue)的定义,队列的存储结构
队列定义队列(queue )简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。在队列中把插入数据元素的一端称为 队尾(rear) ),删除数据元素的一端称为 队首(front) )。向队尾插入元素称为 进队或入队,新元素入队后成为新的队尾元素;从队列中删除元素称为 离队或出队,元素出队后,其后续元素成为新的队首元素。由于队列的插...原创 2019-01-12 12:35:28 · 1483 阅读 · 5 评论 -
栈的定义,两种基本的存储结构:顺序存储结构和链式存储结构
栈的定义栈(stack )又称堆栈,它是运算受限的线性表。其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入、查找、删除等操作。表中进行插入、删除操作的一端称为 栈顶(top) ,栈顶保存的元素称为 栈顶元素。相对的,表的另一端称为栈底(bottom)当栈中没有数据元素时称为空栈;向一个栈插入元素又称为 进栈或 入栈;从一个栈中删除元素又称为 出栈或 退栈...转载 2019-01-12 12:27:21 · 1212 阅读 · 0 评论 -
快速排序(java实现)
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放...转载 2018-09-05 14:53:42 · 313210 阅读 · 211 评论