- 博客(16)
- 收藏
- 关注
原创 C++入门基础(二)
当我们用一个int类型的引用去引用一个double类型的时候,我们可以发现如果我们加了const的编译器却不会报错了,这是因为当一个int类型去引用double类型时,其实时会发生隐式类型转换,而产生隐式类型转换产生的变量是具有常性,是因为我们如果加了const就不会报错了。我们可以发现是编译不通过的,为什么呢?,我们可以从引用的角度来理解,首先ra是一个可读不可修改的变量,而a如果引用ra了,其实类型a的类型就变成了int,就变成了可读可修改的变量了,这其实就是将ra的权限给放大了,所以编译是不通过的。
2022-09-25 10:31:52
389
原创 C++入门基础(一)
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。1.1命名空间的定义命名空间的定义我们需要用到namespace后面跟命名空间的名字,再接一对{},{}中即为命名空间的成员,命名空间里面可以有变量、函数、还可以进行命名空间的嵌套如图:1.2命名空间的使用命名空间中成员该如何使用呢?其实也非常简单,我
2022-09-16 17:07:20
468
3
原创 归并排序递归与非递归实现
这里k每次都是加二倍的gap的意思其实是跳过一组区间,拿第一组区间举例子第一组区间为(0,0)(1,1)当它们完成了合并的时候,这一组区间其实就不需要进行合并了,这时+=2*gap其实就跳到了(2,2)(3,3)这组区间。将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序。这里结合代码我给大家一步步分析,这里gap控制的是每次合并数据的个数,第一次gap==1就是一个一个数去合并,区间其实就是(0,0)(1,1),(2,2)(3,3)以此类推,这里打印给大家看一下。
2022-09-12 17:52:06
527
2
原创 直接选择排序与堆排序
一、选择排序基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。、直接选择排序在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换在剩余的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重复上述步骤,直到集合剩余1个元素。...
2022-08-17 14:32:13
308
4
原创 快速排序的三种思路以及非递归
# 一、快速排序的三种思想## 1、左右指针法快速排序的基本思想:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。**第一趟的排序结果如下:**![在这里插入图片
2022-08-16 15:44:38
813
3
原创 插入排序与希尔排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序...
2022-08-15 19:39:23
223
原创 leetcode300.最长递增子序列(动态规划)
首先,我们来分析一下题目意思,题目给了我们一个数组nums要我们求里面最长递增的子序列的长度,但是递增的数字可以不连续的,且不能改变数组中元素的顺序。**解题思路:**这题如果我们要用动态规划去实现,首先要将该数组拆分成子问题,我拿第一个例题给大家讲一下:如上图,我们可以先从第一个数字算起,第一个数字它自己其实就可以看成是一
2022-08-09 13:51:16
354
14
原创 从暴力递归到动态规划leetcode第62题:不同路径
1、什么是动态规划?动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。## 2、动态规划的核心思想动态规划的基本思想是将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解。对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引
2022-08-08 17:23:22
369
6
原创 栈队列OJ题分享及讲解
从今天开始后面的OJ题,我一致用C++来带大家实现,这需要大家先去了解C++STL里面的容器,以及相关的接口。## 1、有效的括号这题是比较典型的用栈实现的题目,给了我们一个字符串s,让我们去判断里面的括号是否一一匹配。**解题思路:**```cppclass Solution {public: bool i
2022-08-07 15:16:14
698
9
原创 数据结构队列(C语言实现)
1、队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头## 2、队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用
2022-08-06 14:54:55
1041
2
原创 数据结构栈(C语言实现)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。...
2022-08-06 09:15:33
347
4
原创 带头双向循环链表的增删查改
之前的话,我给大家实现过单链表的增删查改,但是单链表的结构在实际应用中的可以说根本用不到,所以呢,今天我给大家带来了带来带头双向循环链表的增删查改,看完双向带头循环链表的实现,你们会发现单链表有很多不足的地方。****结构体的设计如下:**该结构体的里面是有两个指针的,一个prev和一个next,next存放下一个指针的地址
2022-08-02 17:53:29
177
2
原创 Lettcode链表OJ题分享以及讲解
大家好,今天接着给大家带来链表的OJ题,话不多说,咱们往下看:第一题:链表的中间结点这题有很多种解法,但是呢,我会给大家将一种比较优的思路,且后面的OJ题也会用到这种思路。...
2022-07-31 19:33:21
357
2
原创 C语言实现链表的增删查改以及OJ题讲解
目录 动态申请一个节点 单链表的打印 单链表的尾插 单链表的头插 单链表的尾删 单链表的头删 单链表查找 单链表在pos位置之后插入x 单链表删除pos位置之后的值 单链表的销毁 最后呢,我会挑几道关于链表的OJ题给大家讲解一下 ...
2022-07-29 18:17:32
688
9
原创 Leetcode题目分享以及讲解
大家好,今天我给大家带来了一些Leetcode上一些关于数组的题目,话不多说咱们往下看: 第一题:移除元素
2022-07-28 17:39:45
1163
5
原创 C语言实现顺序表的九个常用接口
前言大家好,我是爱编程的小杰,今天我带大家用C语言来实现一下顺序表。首先咱们要实现顺序表得先定义一个结构体,如下:这里呢,我用了一个int类型的数组,还有一个size,size表示的是当前数组中有效的数据元素有多少个,但这里是有弊端的因为这样写的话只能用int类型,那如果类型是double、char、float呢? 所以我进行了如下改动:我先是定义了一个#define N这样的话里面数组元素的个数就可以随时改变了,另外我typdef定义了一个SLDateTyde其实就...
2022-07-27 17:56:05
702
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人