
数据结构与算法
文章平均质量分 90
以数据结构为基础,以算法为工具,解决数学、物理、生活等多方位问题,充分锻炼计算机思维能力
Stark、
一只“程序猿”:目前了解有C#、Java、Python,熟悉C/C++,linux系统编程,MySQL数据库,数据结构与算法等。
其它涉及知识:HTML基础、Qt框架、Git、Redis工具等
持续学习路线:工具链(Docker等)、前端(CSS、JavaScript、Vue等)、后端(网络编程、后端框架等)
感兴趣的方向:人工智能(机器学习、强化学习、深度学习;大模型:LangChain框架、垂直领域整合)
座右铭:梦想是一盏明灯,照亮我们前行的路,无论风雨多大,我们都要坚持不懈。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《数据结构》--二叉树【下】
在节点结构中加入层号属性。结果容器由vector:res改为multimap:m。输出时,输出m.first和m.second即可将层号和节点值同时打印出来。最简单的方法就是在上面的基础上,输出m的最后一个元素的first属性值。在 二 的基础上,输出时,如果m.first == i,输出。二叉树满度也就是节点的度为2。也就是左右孩子都存在。分支节点是度不为0的节点。也就是有孩子节点存在。叶子节点是度为0的节点。也就是没有孩子节点。或者将代码改为:(插入时直接判断)原创 2024-11-12 22:48:59 · 507 阅读 · 0 评论 -
《数据结构》--二叉树【上】
树是一种数据结构,它是由n(n>=1)个有限节点组成的一个具有层次关系的集合。把它叫做"树"是因为它看起来像一颗倒挂着的树,也就是说它是根在上,叶在下的。本文包括:树的定义、特点、基本术语。二叉树的定义、性质、特殊二叉树。二叉树的遍历方法(非递归+递归),包括遍历算法的分析和编码实现。原创 2024-11-10 12:26:40 · 919 阅读 · 1 评论 -
《数据结构》--队列【各种实现,算法推荐】
队列是一种常见的数据结构,按照先进先出(FIFO,First In First Out)的原则排列数据。也就是说,最早进入队列的元素最先被移除。:将元素添加到队列的尾部。:从队列的头部移除并返回元素。:初始化一个空队列。:返回但不移除队列的头部元素(通常称为“peek”或“front”)。:检查队列中是否还有元素。:返回队列中元素的数量。原创 2024-10-06 13:02:04 · 2530 阅读 · 72 评论 -
《数据结构》--栈【概念应用、图文并茂】
线性表的学习体系,栈(Stack-LIFO)的概念,顺序栈与链栈,单调栈专题,共享栈专题,栈的算法应用:递归专题,四则运算表达式专题(前缀表达式、后缀表达式、中缀表达式),逆波兰表达式的题解。原创 2024-10-06 12:40:29 · 1539 阅读 · 30 评论 -
基础算法--枚举
线性枚举指的是遍历某一个一维数组(顺序表)的所有元素,找到满足条件的那个元素并且返回,返回的可以是下标,也可以是元素本身。由于是遍历的,穷举了所有情况,所以一定是可以找到解的,除非问题本身无解。一些资料上也称之为暴力算法(Brute Force)线性模拟就是循环遍历的一种叫法,时间复杂度O(n),认识即可。ok~技能树成功点亮了一叶。如果在顺序表是有序的情况下,我们可以采取折半的方法去查找,这种方法称为二分枚举。查找算法--二分查找-CSDN博客这就是我们的二分法,时间复杂度为O(logn)。原创 2024-10-04 08:15:00 · 1756 阅读 · 17 评论 -
《数据结构》--链表【包含跳表概念】
不知道大家对熟悉还是陌生,我们秉着基础不牢,地动山摇的原则,会一点点的介绍链表的,毕竟链表涉及的也很重要的。在这之前,我们认识过的顺序表,它其实就是一个特殊的数组。那链表到底是什么?又有什么用呢?与顺序结构有什么不一样呢?原创 2024-10-03 16:51:18 · 1990 阅读 · 46 评论 -
基础算法--递归算法【难点、重点】
递归是一种解决问题的策略,通过函数自我调用来分解问题。它需要明确的功能、结束条件和等价关系式,尽管递归有其优点和缺点,但在适当的情况下,它能够提供简洁和优雅的解决方案。原创 2024-10-02 11:26:19 · 1665 阅读 · 21 评论 -
基础算法--递推算法
本节所讲题源自【信奥一本通】C++版:基础算法-第三章-递推算法相信大家应该都接触过数列的概念。哎哟,一直在跟数组打交道,说数列感觉好陌生,哈哈。数列中的迭代法大家都还记得吗:通过反复应用特定规则,推导出某一点起始的连续的后续数列。我们的递推也是这样,给出一些初始值,从题目中找出后续数据应该与已知数据存在哪些关系,能不能写出一个公式或者经过同种操作进行反复推导,得出结论。在数学中我们是数列+递推公式+迭代计算,对应到我们的编码中,就是数组+递推公式+循环实现。原创 2024-08-26 01:02:28 · 898 阅读 · 22 评论 -
基础算法--双指针【概念+图解+题解+解释】
双指针技术是一种高效且灵活的算法策略,对于多种问题都可以应用。在使用双指针时,理解问题的结构及条件是至关重要的。熟练掌握滑动窗口和快慢指针后,可以解决很多典型算法问题。原创 2024-10-01 19:30:06 · 1399 阅读 · 11 评论 -
基础算法--前缀和
前缀和算法是一种用空间换事件的算法,常用于解决某些题目或作为高级算法的组成部分。它可以用于快速计算数组元素之和,通过预先计算数组中每个位置前所有元素的累加和,将这些部分和存储在一个新数组中,从而在需要计算某个区间的和时,可以通过简单的减法操作得到结果,而不必重新遍历整个区间。原创 2024-08-20 15:23:24 · 1522 阅读 · 5 评论 -
基础算法--高精度数据(2)
本节继续上节内容:高精度数据处理。本节主题是回文数。难吗?没有吧。初始化数据不知道吗?也许你只是差一点思路,不知道怎么维护而已,但上节我们讲了,这节也讲了,下次你还不会吗?不能吧。如何判断回文数不会吗?这么简单的对称判断问题而已。核心步骤之所以称之为核心步骤,是因为最后的结果是由这个步骤进行决定的,每一次的数据变化都是有规律可以寻找的,我们习惯了十进制,我们写个X进制的,不管写没写出来,那这就是进步。你比那些只看不动手的人强多了。原创 2024-08-24 14:11:13 · 1351 阅读 · 2 评论 -
基础算法--高精度数据(1)
高精度数据处理一般内容简单,写代码难度较大,可能部分内容涉及基础数学、初等数论等知识。请小心食用。不过本节不会给大家太难的高精度处理,我们第一次接触,不能劝退大家对吧。高精度算法是指,利用基础或高级的数学计算原理,来解决题目给出的数据量超出计算机正常存储范围的数据的一个方式。例如:你知道了用数组元素存储数位;你知道了朴实无华的运算规律/方法;你知道了完成一道题的分析步骤;你初步知道如何处理高精度数据了......只要你认真看完了,思考了学会了,你收获的远不止这些。哪里不懂,尽管留言,我看到就回复你。原创 2024-08-24 01:07:26 · 812 阅读 · 22 评论 -
C++模拟实现vector容器【万字模拟✨】
模拟实现vector,根据文档,我们先看一下vector有哪些成员,需要我们完成什么功能。如果你对这些功能有过初步的了解请跳过。认识(.hpp)后缀。原创 2024-10-01 00:39:36 · 1882 阅读 · 26 评论 -
STL标准模板库---容器篇(一)
对C风格字符串的封装,也是容器类的“先驱”类,也可以称为“实验品”,但这只是相对而言。字符串类string本身功能还是非常强大的。string str;//声明字符串变量//初始化字符串变量//使用重载后的操作符 + 连接两个字符串字符串类还提供了许多成员函数来操作字符串,以下是一些常用的成员函数:size():返回字符串的长度empty():检查字符串是否为空substr():获取子字符串find():查找子字符串在主字符串中的位置replace():替换字符串中的某些字符。原创 2024-07-24 20:03:15 · 1543 阅读 · 0 评论 -
排序算法--堆排序
其实堆排序已经涉及到一个叫做“树”的数据结构了,它不同于链表、栈、队列等,它是一种非线性的数据结构。那么我们今天不说太多,后面自然会仔细讲解的,今天我们就学会一些基础的概念就行。原创 2024-08-04 09:20:06 · 1241 阅读 · 0 评论 -
排序算法--快速排序
由三色旗问题引入,分治思想打基础,进行快速排序的工作原理、代码实现、算法评析【图文详解】,然后还给大家分享一个很厉害的快排优化的文章。原创 2024-08-07 14:36:16 · 821 阅读 · 0 评论 -
排序算法--归并排序
合并的步骤:先申请两个数组合并后那么大小的空间,然后将两个排好序的数组逐一进行比较,往申请空间里面放。第二步:将两两有序的数组进行合并,将两个有序的数组合并成一个有序数组。重复第二步,直至排序完成。第一步:将数组进行分解,当分解成单个元素为一组的时候,才是组内有序的。归并排序的思想:将两个有序的数组合并成一个有序的数组。原创 2024-08-15 21:34:12 · 378 阅读 · 0 评论 -
排序算法--插入排序
插入前,将第3次的数据进行存储int tmp=arr[3],然后tmp与arr[2]进行比较,tmp原创 2024-07-31 15:15:43 · 866 阅读 · 0 评论 -
排序算法--计数排序
计数排序是一种线性时间的排序算法,适用于整数或有限范围内的非负整数排序。它的核心思想是通过计数每个元素的出现次数来进行排序。计数排序不是比较排序,速度快于任何比较排序算法。但对于数据范围很大的数组,需要大量时间和内存。并且由于目前我们的机器的内存比较充足,为了提高机器的运行效率,就利用了空间换时间的思想。下面,我们详细说说计数排序的内容。原创 2024-07-30 22:49:11 · 660 阅读 · 0 评论 -
排序算法--冒泡与选择
排序算法有很多,在我们学习数组那一章节的时候,就给大家列过许多的排序代码。本节我们讲两个比较简单的排序算法:冒泡排序与选择排序。原创 2024-07-30 17:43:50 · 477 阅读 · 0 评论 -
基于二分思想的高效查找算法
对于查找功能,我们最简单的就是循环遍历,找到满足条件的结果就结束。假如有n个数据,我们要查的值为第n个的时候,我们需要执行循环n次才能找到。(即时间复杂度为:O(n));假如我们有一个有序整型数组,依次放入数据1、2、3...n,我们要找到中间的数据h(h原创 2024-07-30 15:19:25 · 1200 阅读 · 0 评论 -
《数据结构》--顺序表
C语言语法基础到数据结构与算法,前面已经掌握并具备了扎实的C语言基础,为什么要学习数据结构课程?--我们学完本章就可以实践一个:通讯录项目简单了解过后,通讯录具备增加、删除、修改、查找联系人等操作。要想实现通讯录项目必须有两个技术关键:(1)C语言语法基础(2)数据结构 之 顺序表/链表。原创 2024-07-20 11:57:09 · 972 阅读 · 0 评论 -
《数据结构》预备
位段的声明和结构体是类似的,有两个不同:1.位段的成员必须是int、unsigned int、 signed int,在C99中位段成员也可以选择其它类型。2.位段的成员后边有一个冒号和一个数字。int _b:5;int _c:10;int _d:30;A就是一个位段类型。那位段A所占内存的大小是多少呢?原创 2024-07-19 23:15:41 · 998 阅读 · 0 评论