![](https://img-blog.csdnimg.cn/d28556d12de6445287849fa724218c6b.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 93
数据结构
Vanghua
这个作者很懒,什么都没留下…
展开
-
基础线段树数据结构
1.线段树概念线段树简单来说就是仅通过一个数组来描述一棵树。数组中每个元素存储树中对应节点存储的信息,不存储描述树的层次结构的信息。注:这和树状数组的描述很像,因为线段树是一棵平衡二叉树(具体证明不在此演示)不需要特定存储层次结构信息,树状数组的父子节点具有特殊的与关系,也不需要存储特定的层次结构信息。2.线段树的存储2.1 线段树的核心性质(每个节点存储着一个区间的区间和) 每个线段树节点存储两个边界值,表示区间的左右边界,除此之外应存储一个区间和变量,用于记录区间的和,当前节点的区间和等于原创 2022-03-07 23:12:34 · 399 阅读 · 0 评论 -
最短路算法
1.Dijkstra算法1.1 算法流程阐释1.初始化:出发点的最短路长度置为零,其余点的最短路长度置为正无穷。2.n轮松弛:Dij算法将点分为已经求出最短路的点的集合和未求出最短路的点的集合。最终得出结果必须使未求出最短路的点的集合为空,初始时所有点都未求出最短路,因此需要N轮松弛,就是最外层循环次数。3.每轮松弛:在未求出最短路的点的集合中找到距离出发点最近的点:在未求出最短路的点的集合中找到一个到出发点的距离最近的点,把它加入已求出最短路的点的集合。4.每轮松弛:更新该点到所有未求出最原创 2022-02-27 21:07:10 · 416 阅读 · 0 评论 -
树状数组数据结构
1.树状数组概念树状数组简单来说就是仅通过一个数组来描述一棵树或一个森林。数组中每个元素只存储着树中对应节点存储的信息,不存储描述树的层次结构的信息。2.普通树的存储对于一棵普通的树,在《数据结构》严蔚敏版中提到可以使用如下方法进行存储:2.1 父节点表示法用一个数组中存储节点信息,节点信息包括节点存储数据和父节点编号。struct Node { int data; // 节点存储的数据 int parent; // 节点对应的父节点的编号}struct Tree {原创 2022-02-22 21:46:47 · 2488 阅读 · 1 评论 -
静态查找表算法
1.二分查找的前提:二分查找属于静态查找表系列算法的有序表查找算法,意思就是二分查找应该使用在有序数列中,数列必须是升序或者降序排列。2.主流二分查找应用场景:2.1 二分查找目标值int find(int *ar, int l, int r, int target) { while(l <= r) { int mid = (l + r) / 2; if(ar[mid] == target) return mid; else if(ar[mid] > target)原创 2022-02-21 23:22:34 · 474 阅读 · 0 评论