- 博客(22)
- 收藏
- 关注
原创 C++类与对象03_核心函数下篇 | 运算符重载 | 取地址运算符重载 | 续构造函数
本章详细讲解了C++中的运算符重载、取地址运算符重载和续探构造函数
2026-05-14 21:59:18
609
25
原创 C++类与对象02_核心函数上篇 | 构造函数+析构函数+拷贝构造函数
C++中的三种默认成员函数:构造函数、析构函数和拷贝构造函数。 构造函数用于对象初始化,具有自动调用、可重载等特点; 析构函数负责资源清理,在对象生命周期结束时自动调用; 拷贝构造函数用于同类对象的初始化,需注意避免无限递归调用。
2026-05-14 17:26:59
417
10
原创 C++类与对象01_基础篇 | 类的定义+实例化+this指针
一文搞懂C++面向对象的起点: 类怎么定义? 对象怎么创建? this指针到底是什么? 零基础也能看懂的入门教程。
2026-04-26 17:22:35
361
4
原创 C++入门核心用法一网打尽:C++的输入cin和输出cout | 命名空间namespace | 缺省参数(默认值) | 函数重载 | 内联inline | nullptr | 引用&
C++七大核心知识点: 1)输入输出流cin/cout自动识别类型; 2)命名空间namespace解决命名冲突; 3)缺省参数(全缺省和半缺省; 4)函数重载实现同名不同参; 5)内联函数inline优化性能; 6)nullptr替代NULL更安全; 7)引用&作为变量别名。
2026-04-11 22:44:11
271
1
原创 【排序算法_归并排序】的详细解析
总的来说这个归并排序-就是先拆分成最小的一块,然后对这一块可分成两小块(所以对这两个小块进行归并排序_把想要的那个放到创建好的那个空间)_然后继续往回走(也就是可以说成往更大的范围走_然后对这一块,同样可以分成两个小块)
2026-03-12 13:40:44
47
2
原创 【排序算法_交换排序】- 【冒泡排序 与 快速排序】的详细解析
代码首先生成10万个随机数存入数组,然后分别进行两种排序。 冒泡排序通过双重循环比较相邻元素实现,时间复杂度O(n²)。 快速排序采用递归和非递归两种版本,使用霍尔分区方法,平均时间复杂度O(nlogn)。 文中还实现了栈结构用于非递归快速排序,包含初始化、入栈、出栈等基本操作。
2026-03-10 22:22:23
36
1
原创 【排序算法_选择排序】- 【选择排序 与 堆排序】的详细解析
选择排序和堆排序。 选择排序通过每次选择最大最小值并交换位置实现排序,时间复杂度为O(n²),空间复杂度O(1),是不稳定的排序算法。 堆排序利用向上/向下调整建堆(大堆升序,小堆降序),排序部分采用向下调整,时间复杂度为O(nlogn),空间复杂度O(1),也是不稳定排序。
2026-03-04 18:16:53
40
1
原创 【排序算法_插入排序】- 【直接插入排序 与 希尔排序】的详细解析
排序算法 -【直接插入排序和希尔排序】首先通过CreateDate函数生成10万个随机数的测试数据。 直接插入排序时间复杂度为O(n^2),空间复杂度O(1),是稳定排序; 希尔排序作为改进版,时间复杂度在O(n^1.3)到O(nlogn)之间,空间复杂度O(1),但不稳定;
2026-03-04 16:31:22
56
1
原创 回文链表—【通过数组(双指针法) || 直接通过链表(快慢指针,反转链表)】
这里有两种判断链表是否为回文结构的方法。 (1).第一种方法将链表节点的值存入数组,通过双指针法从头尾向中间遍历比较,时间复杂度O(n),空间复杂度O(n)。 (2).第二种方法结合快慢指针和反转链表,先找到中间节点,反转后半部分链表,再与原链表前半部分比较。 文中详细分析了两种快慢指针的区别,指出回文链表查找与普通中间节点查找的不同条件,并解释了为何从中间节点的下一个节点开始反转。
2026-02-02 17:38:27
240
原创 层序遍历—通过队列实现
一.首先定义二叉树节点结构(BTNS)和队列结构(QNS、QN),其中队列用于辅助遍历。 二.层序遍历采用广度优先搜索(BFS)策略,通过队列实现:初始化队列后将根节点入队,循环处理队列中的节点,每次取出队首节点访问其值,并将其左右子节点入队,直到队列为空。 三.整个过程包括队列初始化、节点访问、子节点入队和队列销毁等步骤,实现了二叉树的层次遍历。
2026-01-30 13:09:53
45
原创 二叉树的【节点个数 && 叶节点个数 && 第k层节点个数 && 高度 && 查找节点】
本文介绍了二叉树的基本操作实现,包括节点创建与连接,以及五种递归算法:计算总节点数、叶节点数、第k层节点数、树高度和查找特定值节点。 每个算法都通过递归调用遍历二叉树,分别处理空节点、叶节点、特定层数等情况,并返回相应结果。 文中提供了完整的C语言代码实现和递归调用图解,展示了二叉树递归遍历的典型模式。这些基础操作为理解和实现更复杂的二叉树算法奠定了基础。
2026-01-19 19:59:15
147
原创 Top-k问题—详细解析(从【打开文件写出数据】到【打开文件读入数据】)
这篇文章介绍了一个使用C语言实现的Top-K算法,主要分为两个步骤: 数据生成: 通过CreateData()函数生成100万个随机数据并写入文件。 每个数据由随机数生成器产生,并加入索引值增强随机性。 Top-K查找: 通过FindTopk()函数实现: 读取用户指定的K值 从文件中读取前K个数据建立小根堆 逐个比较剩余数据与堆顶,保留较大的元素 最终通过堆排序输出最大的K个元素 该算法时间复杂度为O(NlogK),适用于【海量数据中查找前K大元素】。
2026-01-04 10:34:11
237
原创 从【向上调整,向下调整】到【堆排序】
一.主要包括向上调整和向下调整两种建堆方式。 对于升序排序,需要先建立大堆; 对于降序排序,则需要先建立小堆。二.文章详细展示了两种调整方式的代码实现,并说明了如何通过交换堆顶和堆底元素进行排序。 【无论是升序还是降序,最终都使用向下调整来完成堆排序】
2025-12-29 19:30:18
411
1
原创 用两个队列_实现栈
本文介绍了如何使用链表实现队列结构以及用两个队列模拟栈操作。队列实现部分包括初始化、入队、出队、判空、获取大小、获取头尾元素和销毁队列等操作。栈模拟部分重点展示了入栈和出栈的实现原理:入栈时数据进入非空队列,出栈时将非空队列元素转移到空队列直到只剩一个元素,该元素即为栈顶元素。这种实现方式利用了队列先进先出(FIFO)的特性来模拟栈后进先出(LIFO)的行为。
2025-12-13 21:18:28
202
原创 环形链表的详解
本文探讨了链表环检测的两种方法: 1)使用快慢指针判断链表是否有环,分析了不同步长下的相遇条件; 2)找到环的起始节点。推导表明,当快指针步长为2时总能相遇,而步长为3时需满足特定奇偶 条件。第二种方法通过相遇点和头指针同步移动,数学推导证明最终相遇点即为环的起始位置。文中提供了C语言实现代码,并通过图示和公式详细证明了算法的正确性。
2025-11-26 18:55:59
898
原创 移除元素_双指针法_详细拆解
本文描述了一个移除数组中指定元素(数值为4)的算法实现。 使用双指针方法:destination指针记录非目标元素的位置,threshould指针遍历数组。 当遇到目标值时跳过,否则将元素复制到destination位置。 最终destination的值即为新数组长度(示例中结果为3)。 算法时间复杂度O(n),空间复杂度O(1),通过原地修改数组高效移除了所有指定元素。
2025-11-14 20:19:15
891
原创 字符串中空格的替换
本文介绍了如何在C语言中将字符串中的空格替换为"%20"首先需要将目标字符串存入字符数组并计算长度,然后创建一个替换函数。该函数会统计空格数量,并计算替换后所需的新长度。替换过程从字符串末尾开始操作:若非空格则直接复制字符,若遇到空格则逆序存入'%'、'2'、'0'三个字符。 整个过程在原数组中进行,通过双指针法实现高效替换,最终输出更新后的字符串。这种方法避免了额外空间的使用,直接在原数组上完成修改。
2025-08-14 15:37:29
212
原创 三子棋代码的详细梳理(C语言实现)
本文展示了一个简单的三子棋游戏实现,包含三个文件:test.c(主程序逻辑)、game.c(游戏功能实现)和game.h(头文件声明)。test.c负责菜单显示和游戏流程控制,game.c实现了棋盘初始化、显示、玩家和电脑下棋逻辑以及胜负判断,game.h定义了棋盘的宏和函数声明。玩家和电脑轮流下棋,游戏能自动判断胜负或平局,并显示最终结果。代码通过模块化设计实现了三子棋的基本功能,包括随机数生成、输入验证和棋盘状态检测等。
2025-06-02 16:58:48
254
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅