算法笔记
文章平均质量分 72
笔记
凌星An
1
展开
-
[算法、读书笔记、C++,搜索与图论]dijkstra算法
介绍Dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法,是从一个顶点到其余各顶点的最短路径算法。应用: 解决有权图中最短路径问题。思想: 从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接点,直到扩展到终点为止。下面,我们演示一下具体的过程有向图 如下面所示:起点(源点)为v1 ,终点为v4从起点v1出开始遍历,标记v1已经被遍历过遍历v1的邻接点,找到距离最近的邻接点 :v2因为 v1->v2距离为7,v1-原创 2022-04-12 09:31:13 · 468 阅读 · 0 评论 -
[数据结构、读书笔记、C++] 并查集详解
介绍并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的 合并及查询 问题。其主要操作为:Union(合并) :将两个节点所在集合合并为一个集合Find (查询) :查询某个节点属于哪个集合(即返回所在树的根节点)图示:通过上面的表述,恐怕我们并不清楚并查集到底是什么样子的?下面我们用 图来表示一下有四个节点我们编号为1,2,3,4,也可以有四棵树,每棵树只有一个节点,该节点即为根节点。这四棵树组成的集合(森林 就是我们所说的并查集我们使用数组存储 ,上原创 2022-03-31 21:17:21 · 4168 阅读 · 10 评论 -
[算法、读书笔记]二分查找算法
二分查找算法百度百科:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。图解:比如,原创 2022-03-24 14:02:13 · 399 阅读 · 2 评论 -
[数据结构、读书笔记 ] 队列 以及 单调队列
队列队列的介绍队列也是我们一种很常用的基本数据结构,符合"先进先出"的特性。即最先被放入队列的元素 ,出队时,会最先被取出。一般来说,我们从队列右侧放入元素,可把队列右侧称为队尾 ;从队列左侧 取出元素,可把队列左侧称为 队头 。如图所示:代码const int N=100; //放入过队列中元素数量的最大值int que[N]; //存放整形数据的队列int hh=0,tt=-1; //hh 队头下标 tt队为下标//判断是否为空hh>tt 为真时,队列是空的hh&原创 2022-03-23 19:49:40 · 546 阅读 · 0 评论