数据结构
文章平均质量分 91
数据结构介绍
小小兔在普陀山走神啊
三年以来,三十年以来,由此上溯到一千八百四十年人民英雄们永垂不朽!
展开
-
♥数据结构基础知识体系详解♥
提示对于数据结构这种基础内容,在构建其知识体系时要避免自己再造轮子,需要高一点层次整体上去理解它(格局要大一点,不要盯着代码),要了解算法思想,性能及适用场景,用一些工具和别人梳理的结果帮助自己构建知识体系等。原创 2023-12-21 16:25:09 · 899 阅读 · 0 评论 -
图 - 基础和Overview
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)。线性表可以没有元素,称为空表;树中可以没有节点,称为空树;但是,在图中不允许没有顶点(有穷非空性)。线性表中的各元素是线性关系,树中的各元素是层次关系,而图中各顶点的关系是用边来表示(边集可以为空)。原创 2023-12-21 16:18:36 · 780 阅读 · 0 评论 -
图 - 遍历(BFS & DFS)
它的思想: 假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。显然,深度优先搜索是一个递归的过程。广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS。原创 2023-12-21 16:18:14 · 879 阅读 · 0 评论 -
图 - 最小生成树(Prim & Kruskal)
因为Kruskal涉及大量对边的操作,所以它适用于稀疏图;普通的prim算法适用于稠密图,但堆优化的prim算法更适用于稀疏图,因为其时间复杂度是由边的数量决定的。原创 2023-12-21 16:17:51 · 810 阅读 · 0 评论 -
图 - 最短路径(Dijkstra & Frolyd)
最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。最短路径不一定是经过边最少的路径,但在这些最短路径中,长度最短的那一条路径上只有一条边,且它的权值在从源点出发的所有边的权值最小。从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小,例: 公交查询系统。在这条路径上,必定只含一条弧,并且这条弧的权值最小。原创 2023-12-21 16:17:35 · 814 阅读 · 0 评论 -
图 - 拓扑排序(Topological sort)
对于任何有向图而言,其拓扑排序为其所有结点的一个线性排序(对于同一个有向图而言可能存在多个这样的结点排序)。该排序满足这样的条件——对于图中的任意两个结点u和v,若存在一条有向边从u指向v,则在拓扑排序中u一定出现在v前面。结点1必须在结点2、3之前结点2必须在结点3、4之前结点3必须在结点4、5之前结点4必须在结点5之前则一个满足条件的拓扑排序为[1, 2, 3, 4, 5]。原创 2023-12-21 16:17:19 · 908 阅读 · 0 评论 -
图 - AOE & 关键路径
关键路径在项目管理计算工期等方面有广泛等应用,提升工期就是所见缩减所有关键路径上的工期,并且在实现时需要应用到之前拓扑排序的算法(前提: 有向无环图,有依赖关系)。原创 2023-12-21 16:16:58 · 782 阅读 · 0 评论 -
树 - 前缀树(Trie Tree)
在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。Trie 这个术语来自于 retrieval。根据词源学,trie 的发明者 Edward Fredkin 把它读作/ˈtriː/ “tree”。原创 2023-12-21 09:42:32 · 1522 阅读 · 0 评论 -
树 - 哈夫曼树(Huffman Tree)
哈夫曼又称最优二叉树, 是一种带权路径长度最短的二叉树。(注意带权路径WPL是指叶子节点,很多网上的文章有误导)。原创 2023-12-21 09:36:53 · 876 阅读 · 0 评论 -
树 - 红黑树(R-B Tree)
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组,是平衡二叉树和AVL树的折中。原创 2023-12-21 09:33:36 · 837 阅读 · 0 评论 -
树 - 平衡二叉树(AVL)
AVL树是高度平衡的二叉树。它的特点是: AVL树中任何节点的两个子树的高度最大差别为1。上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都原创 2023-12-21 09:30:52 · 811 阅读 · 0 评论 -
树 - 二叉搜索树(BST)
若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点。动画效果请参考BST。原创 2023-12-21 09:28:49 · 943 阅读 · 0 评论 -
树 - 基础和Overview
我们知道,实际应用当中,我们经常使用的是查找和排序操作,这在我们的各种管理系统、数据库系统、操作系统等当中,十分常用。数组的下标寻址十分迅速,但计算机的内存是有限的,故数组的长度也是有限的,实际应用当中的数据往往十分庞大;而且无序数组的查找最坏情况需要遍历整个数组;后来人们提出了二分查找,二分查找要求数组的构造一定有序,二分法查找解决了普通数组查找复杂度过高的问题。任何一种数组无法解决的问题就是插入、删除操作比较复杂,因此,在一个增删查改比较频繁的数据结构中,数组不会被优先考虑普通链表。原创 2023-12-20 09:12:09 · 790 阅读 · 0 评论 -
线性表 - 栈和队列
数组和链表都是线性存储结构的基础,栈和队列都是线性存储结构的应用。原创 2023-12-20 09:11:22 · 773 阅读 · 0 评论 -
线性表(散列) - 哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。原创 2023-12-20 09:10:34 · 855 阅读 · 0 评论 -
线性表 - 链表
n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。确定一个链表我们只需要头指针,通过头指针就可以把整个链表都能推出来。原创 2023-12-20 09:10:05 · 329 阅读 · 0 评论 -
线性表 - 数组和矩阵
数组是一种连续存储线性结构,元素类型相同,大小相等,数组是多维的,通过使用整型索引值来访问他们的元素,数组尺寸不能改变。原创 2023-12-20 09:09:44 · 952 阅读 · 0 评论