自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 经典排序算法:堆排序的原理与实现详解

本文详细介绍了堆排序算法的原理与实现。堆是一种完全二叉树结构,分为大根堆和小根堆。堆排序通过构建大根堆并不断交换堆顶元素实现升序排列,具体步骤包括:1)从最后一个非叶子节点开始建堆;2)交换堆顶与堆尾元素后调整堆。文章提供了C++代码实现,分析了向下调整算法和建堆过程。堆排序时间复杂度为O(n log n),空间复杂度O(1),是一种高效的原地排序算法,但不稳定。该算法适合对性能要求高、不严格要求稳定性的场景。理解堆排序关键在于掌握二叉树和堆的基本概念。

2025-08-07 10:52:02 319

原创 希尔排序:高效插入排序的进阶之道

希尔排序是插入排序的改进版本,通过引入递减增量序列实现高效排序。它先将数组按较大间隔分组排序,再逐步缩小间隔直至1退化为标准插入排序。核心思想是利用分组预排序使数组接近有序,大幅提升最终插入排序效率。文中详细展示了排序过程,比较了不同增量序列的优劣,并提供了C++实现代码。作为不稳定排序算法,希尔排序平均时间复杂度优于直接插入排序,适合中等规模数据排序。

2025-08-06 14:28:57 936

原创 排序算法入门:直接插入排序详解

直接插入排序是一种基础排序算法,其核心思想是将数组分为已排序和未排序两部分,每次从未排序区取出第一个元素插入到已排序区的正确位置。算法通过遍历比较和元素移动实现排序,时间复杂度为O(n^2)(最坏情况)到O(n)(最优情况)。该方法实现简单、稳定性好,特别适合处理接近有序的小规模数据,但不适用于大规模数据排序。文章详细介绍了算法步骤、代码实现(含关键细节说明)及优缺点分析,是理解插入式排序思想的经典案例。

2025-08-04 10:59:00 550

原创 手把手教你掌握选择排序:图解与代码示例

本文介绍了选择排序的原理、实现与优化。选择排序通过将数组分为已排序和未排序区间,每次从未排序区间选取最小元素放入已排序区间的末尾,逐步完成排序。文章以图解方式详细说明了算法流程,并给出C++代码实现。此外,还介绍了双向选择排序的优化方案,可同时寻找最小和最大值来提高效率。文章分析了选择排序的优缺点:实现简单、空间复杂度低,但时间复杂度高、不稳定,适合小规模数据。最后指出选择排序的思想为堆排序奠定了基础。

2025-08-01 15:46:55 672

原创 经典算法之美:冒泡排序的优雅实现

摘要:冒泡排序是一种基础交换排序算法,通过相邻元素比较交换使最值逐步"浮"到正确位置,实现排序。算法核心在于重复遍历无序区,每轮比较后无序区收缩,有序区扩大。时间复杂度为O(n²),优化后最好情况O(n),空间复杂度O(1)。虽然效率较低,但实现简单,是理解排序本质的经典案例,适合小规模或接近有序的数据排序。文中通过图解和代码演示了冒泡排序的具体实现过程,并介绍了通过标志位优化的方法。

2025-07-31 14:19:41 926

原创 从零理解 GCC/G++:编译原理

从零理解 GCC/G++:编译原理

2025-07-25 14:26:25 697

原创 Kafka入门指南:从零开始掌握分布式消息队列

Kafka入门指南:从零开始掌握分布式消息队列

2025-07-24 16:06:43 1243

原创 C++ -- 红黑树的插入

C++ -- 红黑树的插入

2025-06-24 17:15:38 321

原创 C++ -- AVL树的插入和旋转

AVL树的插入和旋转

2025-06-22 20:37:16 676

原创 C++ -- 多态

C++多态的相关内容

2025-06-07 16:30:28 662

原创 C++ -- 继承

C++中继承的相关内容

2025-06-03 16:16:07 785

原创 C++ -- vector

C++ -- vector

2025-05-22 16:41:42 724

原创 C++ -- string

C++ -- string

2025-05-09 21:31:59 1117

原创 C++ -- 内存管理

C++中的内存管理

2025-05-05 16:02:49 1202

原创 动态内存管理

动态内存管理

2025-05-04 15:01:47 524

原创 C++ -- 类和对象(下)

离开这行便会销毁。

2025-05-03 13:27:36 637

原创 C++ -- 实现日期类

—我们知道,

2025-04-30 15:53:57 417

原创 C++ -- 类和对象(中2)

在C++中,为了增强代码的可读性,支持运算符重载的操作。这么写的问题来了,成员变量如果都是私有的,在类外就访问不到。这里还要强调,在类里的重载函数的参数有一个隐藏的this指针,为了保证参数和操作数数量一致,就得改变写法。将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数。上面我们比较了引用和传值在效率上的差距,那引用就是没有问题的吗?隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。因为在全局的会和编译器生成的冲突,当成规定记住就行。

2025-04-29 18:16:34 795

原创 C++ -- 类和对象(中1)

d相当于d1的拷贝,在这个过程中又重复了自定义类型调用拷贝构造函数。于是后面就开始循环这个过程了。再用上面的另一段代码来演示这个过程来方便理解:可以把**“自定义类型传值调用需要调用拷贝构造函数”**这句话当成规则,验证的方法是f11上面这段代码,程序最开始不会进入func而是进入拷贝构造函数。如果想避免这种情况发生,最好的办法就是传地址。C++中喜欢用的是引用。

2025-04-23 18:27:19 635

原创 C++ —— 类和对象(上)

在上面的代码中已经体现了类的定义方法class name //类名// 成员变量 成员函数//注意分号如果类的声明和定义不在一起,在调用时需要加上作用域操作符// .hpublic:private:int* _a;int _top;成员变量的声明是表明类型、名字class Tpublic://...private:int _a;//成员变量的声明int _b;//成员变量的声明成员变量的定义是在开辟空间时实现的。

2025-04-20 15:41:18 928

原创 C++学习记录

这个方法就是使用namespace关键字。定义命名空间,需要使用namespace关键字,后面写上命名空间的名字和一对{}。还是以刚才的代码为例。有意思的是,如果我们的空间名字重复,就可以改用套娃的方式 来命名。例如这样。

2024-07-26 22:54:35 1021

原创 数据在内存中的存储

其次,我们知道char类型占用1字节(8比特),有符号的char可以表示127(01111111)~-128(11111111);在数值前面增加了一位符号位(即最高位为符号位),正数该位为0,负数该位为1,其余位表示数值的大小。对于64位环境下的浮点数,最高的1位存储符号位,接着的11位存储指数E,剩下的52位存储有效数字M。对于32位环境下的浮点数,最高的1位存储符号位,接着的8位存储指数E,剩下的23位存储有效数字M。对于负数,其补码为反码加1,还是以‘-1’为例,其补码为。

2024-02-21 20:15:41 1633 1

原创 字符函数和字符串函数

strstr的作用是返回str2在str1中第一次出现的位置,过程中不包括'\0’,但以此为停止。这个函数的作用是将source指向的字符串复制到destination指向的字符串。该函数可以把参数部分错误码对应的错误信息的地址返回来。这里的大小不是字符串的长短,而是对应位置上的字符大小。二)拷贝源头字符串的数据空间的“\0"及后面空间。利用指针遍历数组的每个成员,当遇到“\0”时停止,返回计数。,这个参数的意义是让我们主动选择要复制、追加、比较的字符数。一)找到目标空间的"\0"以上函数都包含在头文件。

2024-02-20 16:33:31 604 1

原创 对printf的一些理解

其中“int n = 10”是在给变量n初始化,因其为整形,整形的占位符为“%d”,在输出时会被n替换。%c—字符 %d—整形 %f—浮点型 %lf—双精度浮点型 %s—字符串 %p—指针……原因是,当输出的值不足[m]时,会自动用空格补齐。当我们先出类似的代码是,小数点后面会自动补齐六位数,如果我们想要得到指定几位数,可以这样做。可以看到,在“0.50”前多了两个空格,“6”限定宽度,其中注意小数点也算做1宽度。显而易见我在“5”前加了负号,这时候输出的结果为“12300”(0代表空格)。

2023-10-22 13:07:04 334 1

空空如也

空空如也

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

TA关注的人

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