![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 69
数据结构
QI_X
这个作者很懒,什么都没留下…
展开
-
9. 图
图基本都是参考这个up主,非常感谢1. 相关概念:线性表和树两类数据结构,线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系,本章所述的图结构中的元素则是“多对多”的关系。图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的。入度:多少边指向该顶点出度:多少边从这个点为起点指向别的顶点无向图:无向图是由顶点和边构成。有向图:有向图是由顶点和有向边构成。权重图:如果任意两转载 2021-06-04 19:19:45 · 135 阅读 · 0 评论 -
8. 堆
堆基本都是参考这个up主,非常感谢1. 相关概念:堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中每个节点的值 >= 或 <= 其 孩子节点 的值;堆总是一棵完全二叉树。常见的堆有二叉堆、斐波那契堆等。堆的定义:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i转载 2021-06-04 19:17:37 · 309 阅读 · 0 评论 -
7. 树
树基本概念:基本都是参考这个up主,非常感谢最上面的是根节点没有孩子的节点都是叶子节点一棵树要么是空树,要么有两个指针,每个指针指向一棵树。树是一种递归结构,很多树的问题可以使用递归来处理。一、满二叉树一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。)二、完全二叉树若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。转载 2021-06-04 19:13:52 · 51 阅读 · 0 评论 -
6. Set集合
Set集合基本都是参考这个up主,非常感谢1. 相关概念:无序 不重复比如有一组数:1,2,3,3,2 给他插入到集合中有可能是 {1,2,3},{2,3,1},{3,2,1}…但是不可能是{1,2,3,3,2}集合的作用检查某个元素是否存在重复元素分类:Set: HashSet(常用) , LinkListSet , TreeSet …原理:2. Set集合的四种功能1. 访问(Access):没有2. 搜索(Search):O(1)有哈希冲突O(k)3.转载 2021-06-01 15:04:09 · 182 阅读 · 0 评论 -
5. 哈希表
哈希表基本都是参考这个up主,非常感谢1. 相关概念:概念散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。原理:key —>转载 2021-06-01 10:42:20 · 275 阅读 · 0 评论 -
4. 栈
栈基本都是参考这个up主,非常感谢1. 相关概念:栈是一个先入后出(FILO:First In Last Out)的有序列表。栈(Stack)是限制线性表中元素的插入和删除只能在同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除2. 栈的四种功能1. 访问(Access):O(1)转载 2021-05-30 14:34:22 · 104 阅读 · 0 评论 -
3. 队列
队列基本都是参考这个up主,非常感谢1. 相关概念:队列:是一种特殊的线性数据结构,队列只能允许在队头,队尾进行添加和查询等相关操作。先进先出队列底层是LinkedList实现的2. 队列的四种功能1. 访问(Access):O(N)要一个一个访问2. 搜索(Search):O(N)和访问差不多从头到尾遍历3. 插入(Insert): O(1)只能末尾插入4. 删除(Delete):O(1)只能删除头部元素3.常用操作1.创建队列用LinkedList是转载 2021-05-29 13:52:00 · 85 阅读 · 0 评论 -
2. 链表
链表基本都是参考B站这个up主,十分感谢1.相关概念:链表结构: 物理存储结构上不连续,逻辑上连续;大小不固定概念: 链式存储结构是基于指针实现的。我们把一个数据元素和一个指针称为结点。 数据域:存数数据元素信息的域。 指针域:存储直接后继位置的域。 链式存储结构是用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)链接起来。链式存储结构的线性表称为链表。2. 链表的四种功能1. 访问(Access):O(N)要一个一个访问,知道第一个然后通过next指针往下去找转载 2021-05-28 19:42:57 · 79 阅读 · 0 评论 -
1. 数组
数组1. 概念:数组是在内存中存储相同数据类型的连续的空间声明一个数组就是在内存空间中划出一串连续的空间数组名 代表的是连续空间的首地址通过首地址可以依次访问数组所有元素元素在数组中的排序叫做下标 从零开始2. 区分元素和索引(下标)举例: 数组 [1,22,3,44,5]数组的元素是数组内部具体的值,1,22,3,44,5下标(索引)从零开始, 0,1,2,3,4,3. 访问(Access)和搜索(Search)**访问 **是 通过下标是找这个元素的值**搜索 **是转载 2021-05-28 13:52:42 · 242 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度和空间复杂度时间复杂度 算法的时间复杂度是一个函数,它定量地描述了一个算法的运行时间。时间复杂度常用一个大 O 符号(不是零)来表示,不包括这个函数的低阶项和首项系数。 时间复杂度是渐近的,考虑的是这个值趋于无穷时的情况。 一般我们在计算时间复杂度时,需要考虑算法是否会有多重嵌套循环(即代码中包含的循环内部还有一个循环操作),因为嵌套循环势必会使时间复杂度升阶。而对于一个列表进行循环有限次数的操作,则无须考虑,因为我们会忽略首项的系数。我们在计算一个算法的时间复杂度时,首先需要找出原创 2021-05-27 17:14:51 · 124 阅读 · 0 评论