自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 问答 (1)
  • 收藏
  • 关注

原创 详细图解高阶搜索树B树及C语言实现

前言对于大量的数据而言,链表的线性访问时间太慢,不宜使用。本章节将会介绍一种简单的数据结构:树(tree),其大部分操作的运行时间平均为O(logN)。在数据结构中树是非常有用的抽象概念,在本篇中我们将讨论一棵高阶搜索树——b树。前排提示:高阶搜索树的代码难度高出一个量级,建议先把逻辑理顺后再去看代码哦。...

2022-07-26 10:20:22 2231 4

原创 【C++11】三大神器之——包装器和绑定器

如果你还不知道 C++ 11 引入的包装器和绑定器是什么,可以读读这篇文章,看看有什么 启发;如果你已经对包装器和绑定器了如指掌,也可以读读这篇文章,看看有什么 补充。欢迎交流~

2022-12-15 17:28:44 1400 3

原创 【C++11】三大神器之——右值、移动语义、完美转发

如果你还不知道 C++ 11 引入的右值引用是什么,可以读读这篇文章,看看有什么 启发;如果你已经对右值引用了如指掌,也可以读读这篇文章,看看有什么 补充。欢迎交流~

2022-12-14 17:50:38 1005

原创 【C++11】三大神器之——智能指针

在Cpp11新标准下学习C++三大神器之一的智能指针

2022-12-13 17:48:30 3626

原创 初探动态规划

最近备战蓝桥杯,刚好刷到了动态规划的专题。和之前的大部分算法不同,动态规划是一种极其巧妙的算法思想,没有固定的模板,十分多变,需要我们做到具体问题具体分析。然而网上大部分文章一上来就直接讨论动态规划的思想,并没有写出推导的过程。于是本文主要介绍及总结一些简单的动态规划的方法和模型、方便初次接触动态规划的小伙伴有所理解。动态规划(Dynamic Programming,以下简称DP)是一种用来解决最优值问题的一套方法论。与我们之前所接触到大多数算法不同,DP没有一套固定的模板,需要我们具体问题具体分析。

2022-11-10 17:12:07 608 1

原创 C/C++高精度运算(大整数运算)

众所周知,最大的整型long long的范围是【-9223372036854775808~9223372036854775807】,即使是无符号位的unsigned long long最大值也只是扩大一倍,那当题目需要用到或需要输出比long long类型的范围还要大的数字时,我们是不是就不能用常规办法去接收这些数字了。这个时候使用大整数就可以解决上述问题——也就是解决接收超出整型范围数字的问题。

2022-11-07 00:08:25 2723 1

原创 Vscode配置Git+快速入门,一篇学会80%的Git操作

团队开发中经常会用到Git,能极大简化开发的流程,而个人开发也可以利用Git管理自己的代码。本篇文章将学习实际开发中常用的GIt指令,快速入门GIt的操作流程。

2022-11-02 17:41:33 18334 4

原创 竞赛中应该用scanf还是cin? scanf&printf与cin&cout的比较+快读快写

在刷算法竞赛的时候,我们究竟是用iostream还是cstdio呢?让我们用数据说话!

2022-08-15 16:18:39 8186 7

原创 C语言中i++和++i在循环中的差异性

前言今天刷题时遇到的,浅浅记录一下(可能就我不知道)。C语言中i++和++i都表示自增,不同的是++i是先增加再赋值,而i++是先赋值在增加。我觉得有和我一样的初学者,在之前一直有疑问它们两个都差不多,那到底什么时候用i++,什么时候用++i?今天才了解到原来i++和++i在循环中的判断机制也不一样。...

2022-08-01 21:44:42 1952 2

原创 C语言实现二叉平衡树

前言对于大量的数据而言,链表的线性访问时间太慢,不宜使用。本章节将会介绍一种简单的数据结构:树(tree),其大部分操作的运行时间平均为O(logN)。在数据结构中树是非常有用的抽象概念,在本篇中我们将讨论二叉平衡树,为后续高阶搜索树打下基础。如果代码有疑问的同学可以私信问我,一定要先把逻辑理顺!一定要先把逻辑理顺!一定要先把逻辑理顺!重要的话说三遍(;д;),不然后面的高阶搜索树会很吃亏的!...

2022-07-24 13:28:39 1031

原创 二叉树、二叉树排序树的实现及遍历

对于大量的数据而言,链表的线性访问时间太慢,不宜使用。本章节将会介绍一种简单的数据结构:树(tree),其大部分操作的运行时间平均为O(logN)。在数据结构中树是非常有用的抽象概念,在本篇中我们将讨论二叉树的存储结构、二叉树的遍历和二叉排序树的实现,为后续平衡树以及高阶搜索树打下基础。我们下次将详细讲解二叉平衡树的增删查改。...

2022-07-23 22:59:12 1042

原创 【二叉树先导】树的概念和表示方法

对于大量的数据而言,链表的线性访问时间太慢,不宜使用。本章节将会介绍一种简单的数据结构:树(tree),其大部分操作的运行时间平均为O(logN)。在数据结构中树是非常有用的抽象概念,在本篇中我们将讨论树的基本概念和表示方法,为后续二叉树及高阶搜索树打下基础。...

2022-07-23 12:32:56 644

原创 C语言实现优先队列、二叉堆和堆排序

查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技巧,学习这些经典的查找和排序也能让我们更好和更快的解决问题。在这个专栏中我们会学习六大查找和十大排序的算法与思想,而本篇将详细讲解其中的堆排序;...

2022-07-07 18:28:15 1311

原创 C语言实现归并排序、计数排序、桶排序、基数排序

查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技巧,学习这些经典的查找和排序也能让我们更好和更快的解决问题。在这个专栏中我们会学习六大查找和十大排序的算法与思想,而本篇将详细讲解其中的归并排序、计数排序、桶排序、基数排序;注意:本文中所有排序按照升序排序,降序只需要把逻辑反过来即可!...

2022-07-07 08:30:00 773

原创 C语言实现交换排序算法(冒泡排序、快速排序)

查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技巧,学习这些经典的查找和排序也能让我们更好和更快的解决问题。在这个专栏中我们会学习六大查找和十大排序的算法与思想,而本篇将详细讲解其中的交换排序——冒泡排序和快速排序;.........

2022-07-06 16:23:15 2632

原创 插入排序(直接、折半、二路、希尔)

查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技巧,学习这些经典的查找和排序也能让我们更好和更快的解决问题。在这个专栏中我们会学习六大查找和十大排序,而本篇将详细讲解其中的插入排序——直接插入排序、折半(二分)插入排序、2-路插入排序;注意:本文中所有排序按照升序排序,降序只需要把逻辑反过来即可!............

2022-07-06 11:40:13 766 1

原创 三大经典查找(跳跃、插值、斐波那契)

查找和排序是数据结构与算法中不可或缺的一环,在这个专栏中我们会学习六大查找和十大排序,而本篇将详细讲解其中的三大经典查找——跳跃查找、斐波那契查找、插值查找

2022-07-05 11:43:23 738

原创 三大基础查找(顺序、二分、分块)

查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技巧,学习这些经典的查找和排序也能让我们更好和更快的解决问题。在这个专栏中我们会学习六大查找和十大排序,而本篇将详细讲解其中的三大基础查找——顺序查找、折半(二分)查找、分块(索引)查找这些概念非常的简单,我们只需要快速的过一遍即可;顺序查找那是非常的简单,就是用 for循环遍历数据去判断就行了; 虽然顺序查找简单,但它是唯一 一 个可以针对于无序的数据进行查找;即使是顺序查找也是有优化的方法的,这里还可以提一句,我们针对

2022-07-04 18:37:28 1933 2

原创 怎样分析算法的复杂度

当我们在利用算法实现解决某一个问题时,如果这个算法是正确的,那么通常要去思考这个算法需要的时间和空间资源是多少的问题,如果一个算法需要的时间很长,那么这种算法实际上就很难有用处,同样的如果一个需要很大内存的算法在实际中也是不能使用的。一、什么是好的算法?这里我们要明确一点:好的算法 和 更优的算法 不能混为一谈;一个更优的算法消耗更少的时间、更少的空间,而我们作为初学者,应该更多的去考虑怎么写出一个好的算法,而所谓好的算法要满足这两个性质:不过事实上我们并没有那么多的数据量,并且用大量数据去测试是一个很烧钱

2022-07-04 16:46:09 1773 2

原创 关键路径:解决工程完成需要的时间问题

怎么理解关键路径中的“关键”的含义呢?这个“关键”是以工程结束为目标,举个例子吧,比如你在造火箭,众所周知火箭有很多的部件,而每个部件的制造的时间有块有慢,我们想要让火箭起飞,就肯定要等最慢的部件造完才能够组装,不然火箭一飞就爆炸了啊;所以在关键路径中,我们要找的是从源点到汇点,路径最长的路径;1、事件最早发生时间ETV,即顶点的最早发生时间:事件的最早发生时间一定是从源点开始计算;就比如以顶点V2为例:V2事件最早发生时间为6,表示在活动a1完成之后V2才可以开始;如果以V6为例,那么V6的事件最早发生时

2022-06-26 17:02:51 3612 10

原创 图解Topo拓扑排序

一、Topo排序不是排序首先我们要知道:topo排序并不是真的排序!topo排序是针对于有向无环图而言,搞出一个带有路径(前后)关系的一个序列,而这个序列就叫做topo序列;二、AOV网和Topo序列1.AOV网的概念在一个表示工程的有向图中顶点表示活动,而边表示活动之间的优先级关系,这种图就叫AOV网 (记住这个V表示顶点嘛),所以AOV网是针对于顶点的,而不是针对于边(在图中只有两种关系:针对于顶点和针对于边);2.Topo序列的概念和思想具有n个顶点的有向图,只要满足 Vi 到 Vj

2022-06-25 16:49:57 960

原创 手撕弗洛伊德(Floyd)寻找最短路径

一、Floyd概述Floyd为什么存在?回顾我在上篇文章(Dijkstra)里留了一个小问题:如果我想要知道任意两个节点之间的最短路径要怎么办呢?我们知道Dijkstra只是处理单源点的最短路径算法,也就是求从某一个节点到其他所有节点的最短路径,如果我们想要求出任意两个节点之间的最短路径,那我是不是要执行 N 次的 Dijkstra 算法?回顾一下在Dijkstra的实现中,是不是用到了长度为 N 的辅助向量和路径向量;那我要道任意两个节点之间的最短路径,是不是要维护 N * N 个大小的二维数辅助向量呢

2022-06-24 14:09:16 681

原创 图解迪杰斯特拉(Dijkstra)最短路径算法

【干货满满!】在介绍最短路径之前我们首先要明白两个概念:什么是源点,什么是终点?在一条路径中,起始的第一个节点叫做源点;终点:在一条路径中,最后一个的节点叫做终点;注意!源点和终点都只是相对于一条路径而言,每一条路径都会有相同或者不相同的源点和终点。而最短路径这个词不用过多解释,就是其字面意思:在图中,对于非带权无向图而言,从源点到终点边最少的路径(也就是BFS广度优先的方法);而对于带权图而言,从源点到终点权值之和最少的路径叫最短路径;最短路径应用:道路规划;我们最关心的就是去实现寻找最短路径,通过实现.

2022-06-22 22:34:16 76762 9

原创 最小生成树普里姆算法Prim

无论是什么程序都要和数据打交道,一个好的程序员会选择更优的数据结构来更好的解决问题,因此数据结构的重要性不言而喻。数据结构的学习本质上是让我们能见到很多前辈在解决一些要求时间和空间的难点问题上设计出的一系列解决方法,我们可以在今后借鉴这些方法,也可以根据这些方法在遇到具体的新问题时提出自己的解决方法。(所以各种定义等字眼就不用过度深究啦,每个人的表达方式不一样而已),在此以下的所有代码都是仅供参考,并不是唯一的答案,只要逻辑上能行的通,写出来的代码能达到相同的结果,并且在复杂度上差不多,就行了。根据上文..

2022-06-21 16:58:09 2825 1

原创 最小生成树之Kruskal克鲁斯卡尔算法

一、什么是最小生成树二、greedy algorithm贪婪算法和kruskal克鲁斯卡尔1.greedy algorithm贪婪算法2.kruskal克鲁斯卡尔3. 代码实现前言什么是生成树?什么又是最小生成树?对于一个连通图而言生成树是一个极小连通子图,之前我们说过,一个连通图的生成树可以有多个,如下图所示的连通图,就可以有三个生成树; 我们可以从上图中得出结论:①对于一个包含n个顶点的完全图有n个生成树;②而对于有n个顶点的连通图而言,生成树有n-1条边;继续观察上图,深入思考生成树中顶点和边....

2022-06-20 16:40:17 1418 1

原创 图的遍历、深度优先DFS、广度优先BFS

之前我们讲了用多种方法来实现图的存储,那么当图被创建出来后要怎么去遍历呢?我们知道像邻接矩阵之类的存储结构的核心是通过数组实现的,那么在遍历邻接矩阵的时候只需要用循环遍历数组一样遍历它就行了;对于像邻接表之类的存储结构的核心是使用链表实现的,那么在遍历的时候,我们可以用遍历链表一样的方法。但是这样在实际运用中会很麻烦,那么有没有一种不用区分图的存储结构,都能实现图的遍历的结构呢?解决这个问题之前,我们要清楚什么是图的遍历。简单而言就是从某一个顶点出发,按照某种搜索方式把图中顶点都访问一遍且仅访问一遍,这个过

2022-06-19 12:25:52 527 2

原创 【图的存储】邻接多重表

邻接多重表是无向图的一种存储结构。如果在无向图中我们的侧重点在顶点上,那么使用邻接表是很合适的,然而之前我们讨论过,当我们的侧重点在边上,也就是需要对边增删查改的时候,用邻接多重表就更加合适了...

2022-06-18 20:21:26 10367 10

原创 C语言数据结构、十字链表的分析及实现

结在上篇文章的最后,我们分析了邻接表的优劣,邻接表本身并没有什么大的缺陷,如果说有缺点,那么是对于有向图而言对同时表示一个顶点的出度和入度麻烦,因为需要有邻接表和逆邻接表同时表示,而且这种应用场景是存在的。十字链表就是为了使这个问题得到解决而出现的。所以十字链表就是一种将邻接表和逆邻接表结合在一起的一种图的存储结构,它针对的就是有向图中出度和入度一起使用的情况,并且大大节省了内存。十字链表是由数............

2022-06-16 16:25:49 4755 2

原创 邻接矩阵和邻接表

图的概述和存储结构(一)有一种说法是程序是由数据结构和算法组成的,这很能体现出数据结构在编码中的重要性。而代码优化的能力也是区别有基础的程序员和码农的重要标准,所以对于这一块的学习一定要稳重与细致,每一个章节都要实打实敲出能够实现该种结构的代码才算完成。数据结构的学习本质上是让我们能见到很多前辈在解决一些要求时间和空间的难点问题上设计出的一系列解决方法,我们可以在今后借鉴这些方法,也可以根据这些方法在遇到具体的新问题时提出自己的解决方法。(所以各种定义等字眼就不用过度深究啦,每个人的表达方式不一样而已)在此

2022-06-14 21:04:47 18909 5

原创 C++关键字override

override的翻译是覆盖。实际上它在C++中可以检测哪些虚函数没有被重写并报错注:在派生类的成员函数中使用override时,如果基类中无此函数,或基类中的函数并不是虚函数,编译器会给出相关错误信息。先定义一个基类,基类中的func被声明为一个虚函数派生类对func函数重写运行结果今天做题时看见之前没见过的关键字override,浅浅记录一下...

2022-06-13 12:31:32 12939 5

原创 【C++】左值及左值引用、非常量引用、引用作为返回值

今天遇到了这个问题,浅浅记录一下可以得到两个关键词 非常量引用 和 左值“非常量引用”这个不用多说,形如可以是一个非常量引用。有这么一段代码在test02中引用作为函数的返回值那么对于变量c和变量d变量d调用函数test02,就相当于test02不会产生临时变量,而是直接把temp本身返回给main函数,又由于temp是全局变量,所以在程序结束前temp始终保持有效,故这种做法是安全的。(图片来源:伯乐在线)变量c调用函数test01就会报出:的错误最常见的误区就是:赋值号左边的就是左值,右边的

2022-06-09 11:00:00 890 2

原创 面试题旋转矩阵(两种方法分析及扩展)

面试题旋转矩阵的两种方法优劣分析及公式推广

2022-06-08 01:40:00 532

原创 【基于51】红外寻迹智能小车 - 代码篇

这是一个基于C51单片机的红外巡线智能小车,是一个适合嵌入式单片机、C语言初学者练习的小Demo,文章提供完整的项目思路、免费的源代码。

2022-04-24 14:48:20 31857 38

原创 【基于51】红外寻迹智能小车-硬件篇

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-04-24 13:41:01 8221 7

嵌入式基于C51的红外巡线智能小车

基于C51单片机的红外巡线智能小车完整代码。本项目代码免费,是一个适合初学嵌入式51单片机、C语言的小伙伴学习、练习的简单的小项目。 代码不够成熟,仅供大家参考学习。

2022-11-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除