![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 68
BLFaker84516
热爱编程、热爱生活!各种DIY设计,有想法,有行动!感谢大家关注收藏,不定期分享好项目源码及教程。
下载后,有问题请及时私信沟通,欢迎提问,欢迎来撩!
展开
-
二叉树遍历解析
二叉树的定义可以先通过下图有一个直观了解。)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒。这个图里面,有两个比较特殊的二叉树,分别是编号2和编号3这两个。其中,编号2的二叉树中,叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点,这种二叉树就叫做满二叉树。编号3的二叉树中,叶子节点都在最底下两层,最后一层的叶子节点都靠左排列。原创 2023-03-12 10:36:07 · 119 阅读 · 0 评论 -
字符串解题模板
1、如果有前后置空格,那么必须判断临时字符串非空才能输出,否则会输出空串。这类题目可以分为两类,一类是有前置或者后置空格的,另一类是没有前置和后置空格的。2、没有前后置的空格不需要判断空串。原创 2023-03-12 10:36:48 · 61 阅读 · 0 评论 -
数据结构 栈-先进后出
栈和队列都是一种"操作受限"的线性表(逻辑结构),只允许在一端插入和删除数据;栈的特性是先进后出,队列是先进先出。在项目中当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,这时应当首选"栈"这种数据结构。栈的实现有多种方式,可以用数组也可以用链表实现。基于数组实现的栈的C++private :// 定义一个数组 int count;// 栈中元素个数 int n;原创 2023-03-07 22:22:18 · 215 阅读 · 1 评论 -
数据结构队列-先进先出
队列这个概念非常好理解。你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。原创 2023-03-07 22:21:38 · 424 阅读 · 1 评论 -
各种经典排序算法介绍及实现源码
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GLy4g4Yt-1678111291106)(…/data/…/…/data/images/sort1.png)]这三种排序算法,实现代码都非常简单,对于小规模数据的排序,用起来非常高效。但是在大规模数据排序的时候,这个时间复杂度还是稍微有点高,所以更倾向于用时间复杂度为OnlognO(nlogn)Onlogn的排序算法。特定算法是依赖特定的数据结构的。以上三种排序算法,都是基于数组实现的。原创 2023-03-06 22:04:09 · 285 阅读 · 0 评论 -
对跳表的深入理解
跳表使用空间换时间的设计思路,通过构建多级索引来提高查询的效率,实现了基于链表的“二分查找”。跳表是一种动态数据结构,支持快速地插入、删除、查找操作,时间复杂度都是OlognO(logn)Ologn。跳表的空间复杂度是OnO(n)On。不过,跳表的实现非常灵活,可以通过改变索引构建策略,有效平衡执行效率和内存消耗。虽然跳表的代码实现并不简单,但是作为一种动态数据结构,比起红黑树来说,实现要简单多了。所以很多时候,我们为了代码的简单、易读,比起红黑树,我们更倾向用跳表。原创 2023-03-05 20:27:15 · 272 阅读 · 0 评论 -
递归-需要满足三个条件
递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如DFS深度优先搜索、前中后序二叉树遍历等。去的过程叫“递”,回来的过程叫“归”。基本上所有的递归问题都可以用递推公式来表示。递归需要满足的三个条件一个问题的解可以分解为几个子问题的解;这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样;存在递归终止条件。递归是一种非常高效、简洁的编码技巧。只要是满足“三个条件”的问题就可以通过递归代码来解决。但是递归代码也比较难写、难理解。原创 2023-03-05 20:27:57 · 1335 阅读 · 0 评论 -
非线性表数据结构_图的表示
邻接矩阵存储方法的缺点是比较浪费空间,但是优点是查询效率高,而且方便矩阵运算。邻接表存储方法中每个顶点都对应一个链表,存储与其相连接的其他顶点。尽管邻接表的存储方式比较节省存储空间,但链表不方便查找,所以查询效率没有邻接矩阵存储方式高。针对这个问题,邻接表还有改进升级版,即将链表换成更加高效的动态数据结构,比如平衡二叉查找树、跳表、散列表等。原创 2023-03-04 21:58:54 · 578 阅读 · 0 评论 -
广度和深度优先搜索解析与示例代码
算法是基于特定数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构的。树是图的一种特例(连通无环的图就是树)。图上的搜索算法,最直接的理解就是,在图中找出从一个顶点出发,到另一个顶点的路径。具体方法有很多,两种最简单、最“暴力”的深度优先、广度优先搜索,还有A*IDA*等启发式搜索算法。深度优先搜索算法和广度优先搜索算法,既可以用在无向图,也可以用在有向图上。图(采用邻接表存储)的C++# include // 无向图结构的定义 class Graph {原创 2023-03-04 21:49:56 · 329 阅读 · 0 评论 -
对链表学习的总结一
C/C++ 数组:一组具有相同类型数据的集合。结构体:不同类型数据的集合。int val;} };原创 2023-03-03 23:43:50 · 400 阅读 · 0 评论 -
十大经典排序算法及源码(值得收藏)
十大经典排序算法:https://github.com/lyhxyz/sort选择排序插入排序希尔排序归并排序快速排序堆排序计数排序桶排序基数排序参考资料https://sort.hust.cc/https://github.com/hustcc/JS-Sorting-Algorithm原创 2023-02-25 20:49:43 · 93 阅读 · 0 评论 -
双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输(带源码)
所实现的功能:基于Intel Realsense官方提供的SDK,双目深度相机能获取到相机任何一个像素点距离前方障碍物的距离(即深度信息),并将深度信息串口数据发送至其它设备。这个版本都是基于物理层上功能的实现,双目相机在这个工程当中只是作为了一个传感器使用,而Linux设备端也只做了双目相机的载体以及对双目采集到的深度信息进行串口传输,没有使用任何基于视觉相关的算法。所以,这个版本肯定不是我们用上嵌入式设备的最终代码,大家可以把这个当作双目相机的一个入门工程来学习。原创 2023-02-12 18:17:28 · 2451 阅读 · 0 评论 -
【c++面试问答】全局变量和局部变量的区别
● 使得静态局部变量内存分配在静态数据区,导致延长了生命周期。● 使得静态全局变量无法被其他文件使用,局限了其文件对外链接。C++中的全局变量和局部变量有什么区别?中也有过总结,这里再汇总一下。注:内容全部参考自文末的参考资料。这部分内容在C++问题。原创 2023-02-11 22:12:39 · 585 阅读 · 0 评论 -
【C++面试笔记】sizeof与strlen的区别
这个例子是结构体的内存对齐所导致的,计算结构变量的大小就必须讨论数据对齐问题。为了CPU存取的速度最快(这同CPU取数操作有关,详细的介绍可以参考一些计算机原理方面的书),C语言在处理数据时经常把结构变量中的成员的大小按照4或8的倍数计算,这就叫。这样做可能会浪费一些内存,但理论上速度快了。当然这样的设置会在读写一些别的应用程序生成的数据文件或交换数据时带来不便。sizeof 与 strlen 的区别与使用详解。这算是 C++ 中基础中的基础了,很容易被考到。原创 2023-02-10 08:16:41 · 1627 阅读 · 1 评论 -
【C++学习笔记】析构函数彻底理解
虚函数对应一个vtable(虚函数表),类中存储一个vptr指向这个vtable。如果构造函数是虚函数,就需要通过vtable调用,可是对象没有初始化就没有vptr,无法找到vtable,所以构造函数不能是虚函数。下面的不用看了在14_虚函数详解那一节中也有提到,构造函数不能是虚函数,原因是构造函数在创建对象时必须确定对象类型。具体的理解就是:①首先,在创建一个对象时必须确定其类型。因为类型规定了对象可以进行哪些操作,所以创建对象时必须确定类型,以防止一些不恰当的操作,否则编译器就会报错。原创 2023-02-09 23:59:37 · 567 阅读 · 0 评论 -
【C++学习笔记】纯虚函数
因此没有函数体。● 纯虚函数的声明只需在虚函数形参列表后面。原创 2023-02-09 23:58:41 · 345 阅读 · 0 评论 -
【数据结构与算法】7种经典的排序算法原理及C++实现源码
主要的思想就是在每个非叶子节点上,都把其左右孩子中最大的孩子取出来,并让它往上移动,这也是为什么要自底向上构建的原因,先把最底层的元素中较大的往上移,再把倒数第二层较大的元素往上移,逐层向上,就可以保证每个父节点的值都大于其孩子节点的值,也就满足了大顶堆的性质。②选出左右子节点中较大的节点,与父节点比较,若父节点小,则将较大的子节点放在父节点的位置,但不是交换(相当于每向下一层都试图把较大的孩子对应的元素往上移,当不能继续向下时,就把之前保存的根节点值temp填补在最终位置)原创 2023-02-08 21:58:46 · 667 阅读 · 0 评论 -
【数据结构与算法】常见的数据结构及优缺点
堆:创建堆n、插入(上浮)和删除(下沉)都是。原创 2023-02-07 22:55:23 · 290 阅读 · 0 评论 -
【数据结构与算法】图的深度和广度优先搜索
在很多情况下,我们需要遍历图,得到图的一些性质,例如,找出图中与指定的顶点相连的所有顶点,或者判定某个顶点与指定顶点是否相通,是非常常见的需求。有关图的搜索,最经典的算法有深度优先搜索和广度优先搜索,接下来我们分别讲解这两种搜索算法。所谓的深度优先搜索,指的是在搜索时,如果遇到一个结点既有子结点,又有兄弟结点,那么。很明显,在由于边是没有方向的,所以,如果4和5顶点相连,那么4会出现在5的相邻链表中,5也会出现在4的相邻链表中,那么为了。原创 2023-02-07 22:53:45 · 131 阅读 · 0 评论