- 博客(155)
- 收藏
- 关注
原创 C++语言介绍
(上):主要讲解C++的发展历程,由来,祖师爷,以及学习难度,学习曲线,以及自学的书籍推荐,或者课程推荐(下):为C++的正式开启-类和对象,做语法铺垫。
2024-07-11 12:30:32
1445
2
原创 霍尔排序(递归+非递归)
快拍不仅需要学习递归,还需要学东西非递归,这样更有助于我们理解快拍首先我们需要知道,非递归的学习需要使用栈,所以如果我们的栈的学习是不完善的,建议学习一下栈。
2024-06-21 07:22:01
940
2
原创 快排(前后指针实现)
快排解决办法有很多种,这里我再拿出来一种前后指针版本虽然这个版本的时间复杂度和霍尔一样,逻辑也差不多,但是实际排序过程,确实会比霍尔慢一点。
2024-06-21 07:21:21
729
原创 计数排序-C语言实现
计数排序是速度特别快的一种排序方式,甚至说可以达到o(n),什么概念,一趟就可以实现,这是很快的,虽然具备一定的局限性,但是这个速度也是叹为观止的。
2024-06-20 00:30:00
682
原创 快排(霍尔排序实现+前后指针实现)(递归+非递归)
快排解决办法有很多种,这里我再拿出来一种前后指针版本虽然这个版本的时间复杂度和霍尔一样,逻辑也差不多,但是实际排序过程,确实会比霍尔慢一点快拍不仅需要学习递归,还需要学东西非递归,这样更有助于我们理解快拍首先我们需要知道,非递归的学习需要使用栈,所以如果我们的栈的学习是不完善的,建议学习一下栈。
2024-06-19 00:30:00
1564
原创 数据结构-十大排序算法集合(四万字精讲集合)
冒泡排序具备很强的教学意义,但是没有什么实践意义,这里作为第一个讲解的排序,目的是从简单开始讲解,方便理解直接选择排序也是一个比较简单的排序,所以这里放在第二个进行讲解,这里和冒泡排序是有一点相似。直接选择排序和冒泡排序一样,也是具备一定的教学意义,但是没有什么实际操作的意义,因为直接选择排序的时间复杂度比较高,书写起来和插入排序又差不多,所以没有必要写直接选择排序。
2024-06-18 04:45:00
1717
4
原创 希尔排序-C语言版本
从希尔开始,排序的速度就开始上升了,这里的排序开始上一个难度了,当然难一点的排序其实也不是很难,当你对于插入排序了解的足够深入的时候,你会发现其实希尔就是插入的异形,但是本质上还是一样的。
2024-06-18 00:15:00
971
原创 直接选择排序-C语言版本
直接选择排序也是一个比较简单的排序,所以这里放在第二个进行讲解,这里和冒泡排序是有一点相似。直接选择排序和冒泡排序一样,也是具备一定的教学意义,但是没有什么实际操作的意义,因为直接选择排序的时间复杂度比较高,书写起来和插入排序又差不多,所以没有必要写直接选择排序。
2024-06-17 04:30:00
859
1
原创 插入排序-C语言版本
插入排序是很重要的排序,著名的希尔排序就是从插入排序演变过来的,所以我们需要并且很多时候有些面试也是会面试插入排序的,所以需要好好捋清楚插入排序的逻辑是什么。
2024-06-17 04:15:00
1156
原创 二叉树的习题精讲-二叉树的遍历
二叉树遍历_牛客题霸_牛客网 (nowcoder.com)要求就是前序遍历构建一棵树如图解前序输入,中序输出函数是一个递归函数,用于中序遍历二叉树。中序遍历的顺序是:左子树、根节点、右子树。root1函数根据传入的字符串数组a创建一棵二叉树。'#'piNULLvalpileftrightmain函数是程序的入口点。
2024-05-31 00:45:00
1203
原创 二叉树习题精讲-相同的树
函数通过递归的方式比较两棵树的每个节点。首先检查当前节点是否为空,如果不为空再检查节点的值是否相同。如果所有对应的节点都相同,那么函数返回。如果任何一对对应节点不同,函数返回。100. 相同的树 - 力扣(LeetCode)
2024-05-29 00:45:00
447
原创 二叉树习题精讲-单值二叉树
函数通过递归的方式检查每个节点的值是否与其子节点的值相同。如果树中的所有节点的值都相同,那么函数返回。,表示这是一个单值树;如果任何节点的子节点的值与它不同,函数返回。965. 单值二叉树 - 力扣(LeetCode)判断这里面的所有数值是不是一样。,表示这不是一个单值树。
2024-05-29 00:30:00
771
原创 拿捏数据结构- 链式二叉树
BTNode;这行代码使用typedef关键字定义了一个新的别名BTDataType,它是int类型的别名。这意味着在代码中,你可以使用BTDataType作为int类型数据的一个更有意义的别名。这行代码开始定义一个名为的新结构体类型。是结构体的名称,它将用于表示二叉树中的节点。这个大括号内的代码定义了定义了一个名为_data的成员变量,它用于存储节点中的数据。由于使用了之前定义的BTDataType,所以这个成员变量是int类型的。定义了一个名为_left的成员变量,它是一个指向。
2024-05-28 00:30:00
860
原创 数据结构-堆排序问题
在建堆之后,函数进入一个循环,每次循环中,它将堆顶元素(当前堆中的最小元素)与当前堆的最后一个元素交换。然后,堆的大小减少 1,并且对剩余的堆进行向下调整以保持最小堆性质。如果相反的话,会导致根节点变化,从而导致逻辑混乱,数组里面的数值少的时候是不明显的,但是多的时候就不行了。函数来构建一个小顶堆(最小堆)。:循环继续进行,直到堆的大小减小到 0。1,需要在数组里面进行排序,我们可以采取在数组建堆。函数实现了一个堆排序算法,它接收一个整数数组。2,然后交换收尾元素,每次调整的数值减少1。
2024-05-27 15:15:13
331
1
原创 数据结构-二叉树系统性学习(四万字精讲拿捏)
树的关键点是不知道定义几个树的度1,明确知道的话我们可以写2,不知道几个树的度,顺序表来写3,右兄弟左孩子写法不管多少,我们只定义两个树的度}BTNode;这行代码使用typedef关键字定义了一个新的别名BTDataType,它是int类型的别名。这意味着在代码中,你可以使用BTDataType作为int类型数据的一个更有意义的别名。这行代码开始定义一个名为的新结构体类型。是结构体的名称,它将用于表示二叉树中的节点。这个大括号内的代码定义了定义了一个名为_data。
2024-05-27 15:00:08
2012
8
原创 二叉树顺序结构的实现(堆)
树的关键点是不知道定义几个树的度1,明确知道的话我们可以写2,不知道几个树的度,顺序表来写3,右兄弟左孩子写法不管多少,我们只定义两个树的度。
2024-05-21 15:44:03
1166
2
原创 二叉树的基本概念
这里我会从二叉树的概念开始讲解,其次涉及到概念结构,以及堆的实现和堆排序。目的是,堆比二叉树简单,同时堆本质上是二叉树的其中一种情况,堆属于二叉树顺序结构的实现最后完善二叉树的讲解,也就是二叉树的链式结构的实现树的关键点是不知道定义几个树的度1,明确知道的话我们可以写2,不知道几个树的度,顺序表来写3,右兄弟左孩子写法不管多少,我们只定义两个树的度。
2024-05-21 15:43:39
822
原创 计算机系统学习+适合大学生-非科班0基础出身人员(就业指导基础版)
计算机的发展机械计算时代: 早期的计算工具,如算盘,可以追溯到古代。 17世纪,帕斯卡和莱布尼茨发明了机械计算器,能够执行基本的算术运算。 电子计算时代: 19世纪,查尔斯·巴贝奇设计了差分机和分析机,后者被认为是通用计算机的先驱。 20世纪初,康拉德·楚泽开发了Z系列,这是早期的可编程计算机之一。 第一代计算机(1940s-1950s):使用真空管作为主要的电子元件。代表性的计算机有ENIAC(电子数字积分计算机)和UNIVAC(通
2024-05-20 02:00:00
851
原创 队列的讲解
/ 链式结构:表示队列}QNode;// 队列的结构 (因为队列是先进先出,后进后出,也就是和栈是相反的,此时会尾进头出,所以我们需要更新尾部和头部节点)// (把头结点,尾结点,链表的实际的大小放里面,这样不需要每次使用的时候进行循环找尾,我们只需要每次更新尾结点就可以)//头节点//尾结点int size;}Queue;// 这里采取一级指针进行实现代码逻辑,如果不创建队列的结构,我们就需要采取二级指针// 初始化队列// 销毁队列// 队尾入队列// 队头出队列。
2024-05-15 04:15:00
1487
原创 设计循环队列
622. 设计循环队列 - 力扣(LeetCode)实现逻辑空间大小是固定的这一道题用链表实现看起来是特别有优势我们可以搞成循环链表循环队列想可以重复使用这些空间也就是到尾部,就绕回去了,也就是有限空间的无限利,保证先进先出,重复使用就像图书馆,就四个座位,走一个人补一个人什么时候是空,什么时候是满(此时我们怎么区分空和满)方法1,增加size记录空还是满size==0 也就是空size==k也就是满方法2:额外多开一个空间(永远空一个空间
2024-05-15 01:45:00
1827
原创 括号匹配(栈)
20. 有效的括号 - 力扣(LeetCode)c++有栈 但是C语言没有到那时我们可以自己造这里的代码是直接调用栈,然后调用等于三个左括号的任意一个 我们就入栈左括号(入栈)右括号取出栈顶数据,出栈并且进行匹配,这里匹配的是不匹配的情况这里进行方向的判断因为不匹配可以直接拿结果栈里面还有数据意味着数量不相等‘也就是此时进行判断 此时栈是不是为空图解因为每次都是左括号入栈,然后然后才有右括号的,所以我们可以来一个判断,如果入栈半天只有左括号,
2024-05-14 00:45:00
881
原创 数据结构-栈的讲解
/ 首元素的地址int _top;// 栈顶,初始化为0,也就是等同于size,初始化为-1,等同于下标// 容量}Stack;// 初始化栈// 销毁栈// 入栈// 出栈// 获取栈顶元素// 获取栈中有效元素个数// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0。
2024-05-13 04:15:00
1026
1
原创 数据结构-栈和队列(速通版本)
/ 首元素的地址int _top;// 栈顶,初始化为0,也就是等同于size,初始化为-1,等同于下标// 容量}Stack;// 初始化栈// 销毁栈// 入栈// 出栈// 获取栈顶元素// 获取栈中有效元素个数// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0// 链式结构:表示队列}QNode;// 队列的结构 (因为队列是先进先出,后进后出,也就是和栈是相反的,此时会尾进头出,所以我们需要更新尾部和头部节点)
2024-05-13 00:45:00
1449
4
原创 具备教学意义的实操(用队列实现栈)
225. 用队列实现栈 - 力扣(LeetCode)https://leetcode.cn/problems/implement-stack-using-queues/description/实现逻辑一个是先进先出(队列),一个是后进先出(栈)这里用两个队列导入·一下数据出来数据之后入数据代码的实现#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int QDat
2024-05-11 21:04:22
466
原创 计算机的存储体系
与程序员相关的CPU缓存知识 | 酷 壳 - CoolShell。存在内存里面的时候 不通电是不行的 这里是临时存储的。cpu是不会直接访问内存的。所以一般加载到缓存再访问。内存的存储速度比硬盘快。
2024-05-08 23:29:29
367
原创 环形链表(是否成环)(简单)(证明题)
什么情况下会追不上,也就是当第一次循环没有追上,第二次-1依旧是奇数没有追上,那么此时存在追不上的情况,但是这种情况是否存在?接下来我们进行证明。已知是快慢指针,所以我们已经从判断问题,变成了追击问题,1,我们把判断问题,用快慢指针搞成追击问题。证明:这里我们需要假设是快指针一次走三步。所以我们按照快指针一次两步进行推算。那此时说明3slow==fast。第一种也就是当差距为偶数的时候。第二种也就是当差距为奇数的时候。证明:已知这里是一次走两步。那么此时有两种可能性。
2024-05-08 23:23:40
523
原创 链表学习检验题目-随机链表的复制
我们看见这个题目的时候首先就是看不懂,有点懵的。其实这都是我们想复杂了、这里你不能来回去追求random指向的节点的哪里,只需要直接进行拷贝就可以。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。个节点组成的链表来表示输入/输出中的链表。的链表,每个节点包含一个额外增加的随机指针。,该指针可以指向链表中的任何节点或空节点。那么在复制链表中对应的两个节点。例如,如果原链表中有。返回复制链表的头节点。
2024-05-07 20:29:32
831
2
原创 贪吃蛇项目(小白保姆级教程)
1:0)//控制面板的操作//隐藏光标信息//指定光标的位置//初始化界面//蛇的状态OK,//正常KILL_ESE,//退出KILL_WALL,//撞墙KILL_MYSELS//咬到自己//蛇的方向enum _DIRUP,//上DOWN,//下LEFT,//左RIGHT//右//创建节点int x;int y;//创建蛇的状态//方向,头节点,状态,食物,一个食物的分数,时间,得分情况//蛇的头节点//蛇的食物//蛇的状态//蛇的方向。
2024-05-06 23:00:50
1584
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人