- 博客(43)
- 收藏
- 关注
原创 超详解C++类与对象(中)
构造函数是一个特殊的成员函数,名字与类名相同创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。函数名与类名相同。无返回值。对象实例化时编译器自动调用对应的构造函数。构造函数可以重载。下面是一个日期类的构造函数class Datepublic:_day = day;int _month;int _day;int main()//自动调用d1.Print();return 0;
2024-10-09 18:55:00 720
原创 【探索数据结构与算法】树与二叉树上篇(图文详解)
树是一种非线性的数据结构,它是由n(n >= 0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。在树中有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1 <= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继因此,树是递归定义的。注意:树形结构中,子树之间不能有交集,否则就不是树形结构。
2024-09-18 16:19:03 1023
原创 【探索数据结构与算法】快速排序超详解:hoare版本、挖坑法、前后指针法、优化版、非递归实现
快速排序超详解:hoare版本、挖坑法、前后指针法、优化版、非递归实现
2024-09-17 20:44:21 910
原创 【探索数据结构与算法】选择排序:原理、实现、优化与分析(图文详解)
在众多排序算法中,选择排序以其简洁直观的特点而著称。尽管在效率上不是最优的,特别是对于大规模数据集而言,但选择排序的算法思想却蕴含着深刻的逻辑和广泛的应用场景。通过不断选择剩余元素中的最小(或最大)元素,并将其放置到序列的起始位置,选择排序以一种简单而直接的方式完成了数据的排序。
2024-09-17 10:24:23 668
原创 【探索数据结构与算法】希尔排序原理、实现与分析(图文详解)
希尔排序(Shell Sort)是插入排序的一种更高效的改进版本,也称为缩小增量排序。
2024-09-16 21:16:26 1285
原创 【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
因此,第i个元素需要比较i次(其中i从2开始,直到n),总共需要进行的比较次数大约为1 + 2 + 3 + ... + (n-1) = n(n-1)/2,时间复杂度为O(n^2)。当输入数组已经是排序状态时,插入排序的性能最优。插入排序是一种原地排序算法,它只需要一个额外的存储空间来暂存当前需要插入的元素(即“key”),而不需要额外的数组来存储排序过程中的数据。在插入排序过程中,如果两个相等的元素,后面的元素不会移动到前面元素的前面,而是直接插入到与它相等的元素之后,从而保持了原有的相对顺序。
2024-09-16 20:32:31 1192
原创 掌握C语言文件操作
磁盘上的文件就是文件。然而在程序设计中,我们所谈的文件有两种,一种是程序文件,另一种是数据文件(从文件功能的角度来分类的)文件名一个文件要有一个唯一的文件标识,以便用户识别和引用,这就是文件名⽂件名包含3部分:⽂件路径+⽂件名主⼲+⽂件后缀程序文件与数据文件。
2024-08-24 19:34:51 847
原创 【探索数据结构与算法】向上调整建堆与向下调整建堆的时间复杂度
堆排序是一种优于冒泡排序的算法, 那么在进行堆排序之前, 我们需要先创建堆, 那么这个建堆的时间复杂度是多少呢?
2024-08-23 13:05:24 363
原创 【探索数据结构与算法】堆的具体实现和应用
目录一.堆的基本概念二.堆的结构定义 三.堆的接口实现 1.初始化2.销毁 3.向上调整算法(重要) 4.入堆 5.向下调整算法(重要) 6.出堆 7.取堆顶元素 8.对堆判空 9.获取堆的数据个数 四.C语言实现堆的完整代码 Heap.h Heap.c test.c 堆排序:数据流中的TopK问题: 堆的特性数组与堆的关联 为什么选择数组?注意:我们只是把数组在逻辑上想象成了抽象的堆,其实它本质上就是数组 数组与堆的映射关系(重要) 堆的结构定义与顺序表基本是一致的,这也更说明了堆的概
2024-08-21 22:30:00 558
原创 【数据结构算法经典题目刨析(c语言)】顺序表和链表的区别(图文详解)
这是因为CPU在访问数据时,为了更快速的访问,CPU会把内存中的数据放在更快的存储设备(高速缓存),如果访问数据在缓存,缓存命中,直接访问,不在缓存叫不命中,要把数据从内存加载到缓存,再访问,但在放入时,CPU会以自身字长(可相当于好几个要访问的数据空间大小)大小的空间把要访问的数据放入缓存中,又因顺序表是连续的所以一次可以把好几个数据放入缓存。为什么顺序表的缓存利用率高于链表呢?
2024-07-31 14:34:08 739
原创 超详解C++类与对象(上)
面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装5.类的作用域6.类的实例化7.类的对象大小的计算8.类成员函数的this指针
2024-05-23 20:22:02 639 2
原创 详解C语言之动态内存管理
详细介绍动态内存函数:(1) malloc函数(2) calloc函数(3) realloc函数 以及动态内存的常见错误
2024-05-17 23:19:54 600 4
原创 预处理详解
预定义符号2. #define定义常量3. #define定义宏4. 带有副作⽤的宏参数5. 宏替换的规则6宏函数的对⽐7. #和##8. 命名约定9. #undef10. 命令⾏定义11. 条件编译12. 头⽂件的包含
2024-05-13 22:58:43 957 8
原创 掌握C语言函数——内存操作函数
1.memcpy使⽤和模拟实现2. memmove使⽤和模拟实现3. memset函数的使⽤4. memcmp函数的使⽤
2024-05-08 21:18:00 917
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人