数据结构与算法
数据结构与算法笔记
Tonson_
这个作者很懒,什么都没留下…
展开
-
C++排序算法(二路归并排序)
C++排序算法(二路归并排序)归并排序算法是一个可以在最坏情况下依然保持O(nlogn)运行时间的确定性排序算法。归并排序的主体结构属典型的分治策略,我们可以先进行无序向量的递归分解,再进行有序向量的逐层归并。代码实现#include<iostream>using namespace std;template<class T>void merge(T *array, int left,int mi,int right){ T* A=array+left;原创 2020-05-13 12:02:22 · 1289 阅读 · 0 评论 -
C++ 查找中位数
查找C++无序数列中位数1.将无序数列转化为有序数列,然后直接通过索引找到中位数2.已知中位数 要求左边小于(大于)中位数,右边大于(小于)中位数,且左边数列大小等于右边数列大小 。 而对左边数列或者右边数列数值的排列顺序无要求。所以,我们可以采用优先队列进行解决。代码实现#include<iostream>#include<queue>//优先队列#include<vector>#include<assert.h>#include<l原创 2020-05-11 18:08:17 · 5266 阅读 · 0 评论 -
C++ 二分查找实现
C++ 二分查找二分查找法是针对于有序向量中,查找该向量中某一个数。二分查找法是通过将向量中点的值与要查找的值进行比较,然后每次减半去缩小查找范围。代码实现#include<iostream>using namespace std;//时间复杂度O(log)template<class T>int binaryFind(T *arr,const T &value, int left,int right){ //若数组中value有重复,则会找到原创 2020-05-11 17:33:16 · 286 阅读 · 0 评论 -
C++ 广度优先搜索(邻接表+队列实现)
C++ 广度优先搜索(邻接表+队列实现)广度优先搜索的结果是图的生成树,也就是极小连通图(n个顶点,n-1条边)广度优先搜索 相当于 树结构的层次遍历,因此我们可以套用树的层次遍历,利用队列去解决图的广度优先搜索...原创 2020-05-11 16:18:11 · 1107 阅读 · 0 评论 -
C++ 深度优先搜索(邻接表+栈实现)
C++ 深度优先搜索(邻接表+栈实现)深度优先搜索的结果是图的生成树,也就是极小连通图(n个顶点有n-1条边)图的生成树的结果是不唯一的,它是根据你的存储方式的变化而变化的。深度搜索步骤:1.确定一个开始顶点,并将该顶点标记为已访问。2.访问开始顶点的第一个邻接顶点,if(未被访问)将该邻接顶点标记为已访问。将该邻接顶点作为新的开始顶点。重复2else搜索下一个邻接顶点。重复23.当开始顶点的所有邻接顶点均已被访问回溯到上一个开始顶点,重复24.直到所有的顶点都已被访问过(没有点原创 2020-05-11 12:30:59 · 2081 阅读 · 0 评论 -
梯度及梯度下降法
梯度梯度是哈密尔顿算子(Nabla算子)直接作用于函数F( r )(不论F是矢量还是标量),当F是标量时,梯度即为矢量。这里呢,解释一下什么是哈密尔顿算子实际上,哈密尔顿算子就是一个微分算子,就是我们熟悉的倒三角符号∇\nabla∇。标量场中的梯度指向标量场中增长最快的方向,梯度的长度就是这个最大的变化率。...原创 2020-03-22 23:00:50 · 654 阅读 · 0 评论