- 博客(21)
- 收藏
- 关注
原创 Linux权限
概念:在操作对象有满足人的需求属性时,对不同用户(人)的限制Linux中的用户类型:超级用户、普通用户。在Linux下root用户不受限制、普通用户受权限限制;Linux中root用户的命令提示符时‘#’,普通用户是‘$’;
2023-11-23 00:01:54
111
原创 auto、类和对象的初步理解、# this指针
(二者不同之处在于class在没有设置权限时默认为私有,而struct默认为公有,并且struct兼容C语言的用法可以作为结构体的定义,不过我们一般定义类是使用class)一般我们在做比较大的项目时,要实现代码的模块化,这时候就需要用到声明定义分离。在类中定义的成员函数会被默认为inline,所以一般代码行数较少功能较简单的我们就可以直接定义在类中。private://声明int* a;int _top;public://声明//默认在类里定义的就是inline//定义。
2023-10-19 22:22:37
131
1
原创 缺省参数、函数重载、引用、内联函数
/参数类型不同//参数个数不同//参数顺序不同int main()Fun1(1,2);Fun2(100);return 0;以上Fun1,Fun2,Fun3均构成函数重载。注意:1、函数参数相同,返回值不同的同名函数不构成函数重载。n++;return n;n++;return n;以上的两个Fun函数不构成函数重载。2、参数本身是不是const对函数重载没有影响,影响的参数指向的类型。格式为:类型 &引用变量名 = 已定义过的变量名。
2023-10-17 12:26:38
138
3
原创 KEIL中ColorsFonts 选项卡下没有C/C++Editor files选项问题解决 超详细
KEIL中ColorsFonts 选项卡下没有C/C++Editor files选项的原因是。
2023-09-28 22:48:32
3127
6
原创 C语言实现连珠棋(三子棋、五子棋)
玩家下棋就是把二维数组的指定行列元素替换为‘*’就好了,当然,我们要注意我们输入的行列数不能超过棋盘的行列数,和二维数组指定元素没有被占有。由于在初始化棋盘时都置为空格,打印出来时无法辨别,所以我们需要打印一些分割线来区别。我们把棋盘看成一个二维数组,其中ROW为棋盘的行数,COL为棋盘的列数,它们两个规定了棋盘的大小。NUM规定了几颗连续的棋子相连能赢,如果NUM为3,则游戏为为三子棋;NUM为5,则游戏为五子棋。就好了,如果遍历过程中有出现连续的五颗棋子相同就代表有一方获胜,否则就平局。
2023-05-07 23:32:37
156
2
原创 C语言实现基数排序
基数排序和我们前面学的计数排序一样都是非比较型整数排序,它的基本思想是把整数分成个、百、千等位数分别进行比较。基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。2、创建数组count对序列的每组位数进行计数,再累加求得对应序列数每轮排序后的位置。3、把排序后的数按对应位置放入数组output。
2023-04-15 15:40:29
345
1
原创 C语言实现归并排序
用递归实现归并排序的思路就是把序列分成不可再分的子序列,合并两个有序的子序列,然后回溯(回溯就是递归结束返回上一层),再合并两个有序的子序列,再回溯再合并……合并两个有序数列的思路是分成左区间和右区间,a[begin1]和a[begin2]比较,如果a[begin1]比a[begin2]小,就把它放入tmp,然后++begin1,反之亦然……最后如果左区间取完了就把剩余右区间全部放入tmp,反之亦然。代码如下:二、非递归实现归并排序非递归实现归并排序的思路就是定义一个区间间隔(gap),然后合并两个
2023-04-13 23:47:04
414
2
原创 C语言实现堆排序
要把5用向下调整法建成小堆,就要先7和8两棵子树建成小堆,而2、7、8三棵子树可以直接用向下调整法建成小堆。如果建小堆,那么我们就需要把堆顶取出,然后让剩下的元素再建堆,但从图中我们就可以看出,左右子树已经乱了,就得再去循环建成小堆,但这样堆排序的效率就大大降低了。每次建完大堆后,把堆顶与堆尾交换,这样最大值就排好了,把它从堆里取出,继续建大堆,再交换堆顶堆尾,次大值就排好了,取出次大值,再建堆……第一步:9和左孩子2、右孩子3之中较小的2比较,9比2大,交换9和2。因此,排升序的时候,我们要建大堆。
2023-04-11 19:14:06
159
原创 C语言实现希尔排序
直接插入排序在有序的情况下非常高效,但在无序特别是较大的数都集中在前面的时候效率就特别低,对此希尔排序引入了。gap的值越小每次预排序序列就越容易变得有序,但gap的值太小预排序就失去了意义。gap的值越大较大数就能越快到后面,但gap的值太大难以使序列变得较为有序;因此,一般gap=n/2或者gap=n/3+1(n为元素个数)希尔排序在预排序时可能会交换相等数据,因此希尔排序不稳定。的进阶版,是一种非常高效的排序方法。当gap=n/3+1时,O(N)=N。当gap=n/2时,O(N)=N。
2023-04-10 23:51:51
106
3
原创 C语言实现冒泡排序
在有序的情况下,我们只需冒一轮就退出while循环了,所以时间复杂度为O(N);在最坏的情况下,我们需要冒n-1轮,时间复杂度为O(N^2)。冒泡排序可以说是我们学C语言最早接触的排序,也是最基本最简单的排序,虽然冒牌排序的效率没有那么高,但作为初学者,我们一定要掌握它。,第一轮把最大(最小)的值冒到最右边,第二轮把次大(次小)的冒到倒数第二位……重复n-1次就把序列排成有序的了。综上,冒泡排序的时间复杂度为O(N^2).最后,我们来算一下冒泡排序的时间复杂度:?那么,冒泡排序的原理是什么呢。
2023-04-09 21:09:12
118
1
原创 C语言实现直接选择排序
举个例子:玩斗地主时,一次性把牌拿起,然后把牌大的放最右边,再把次大的放在最大牌的前面,依次排序,就把牌次小到大排好了,直接选择排序就类似如此。前面的直接选择排序一次我们只排一个数,现在我们每一次从序列中找出一个最大和最小的数,分别放在两边,这样排序就会快一些。,因此直接选择排序的效率比较低,使用它的时候数据规模要尽量小,否则要运行很久才会出结果。直接选择排序的时间复杂度没有最好和最坏的情况,不管序列是有序还是无序,它的。在最后那里我们可以看到end<begin,此时排序就结束了。
2023-04-08 16:56:11
1155
原创 C语言实现直接插入排序
举个例子,我们在玩斗地主的时候,发牌时,我们一张一张把牌拿起来,然后把大的牌放到右边(左边),这样我们一张一张把牌拿好后就得到了从小到大(从大到小)的一组牌,这其中我们使用的就是直接插入排序。我们以数组a[] = { 3, 5, 2, 7, 8, 6, 1, 9, 4, 0 };大家好,我是新人小白木杉,最近刚学习了排序,和大家分享我学完直接插入排序后的理解。后面的步骤类似,我就不在画出来了,大家可以自己去画一画,加深自己的理解。在逆序的情况下最坏,此时时间复杂度为O(N^2)
2023-04-07 10:36:55
159
3
原创 C语言横向输出二叉树
input a[N]这里呢,是用括号输入法创建了上面那一棵树,这个我已经在上一篇博客中介绍了,感兴趣的可以去学习一下,大家也可以用自己的方式创建树。大家好,我是一名初学者,最近正在学习C语言和数据结构,今天和大家分享一下如何用C语言横向输出二叉树。
2023-04-05 10:09:48
1113
原创 C语言用括号表示法创建二叉树然后中序输出
(’ 表示把双亲节点存入栈,然后开辟一个新节点链接在双亲节点的左孩子上。树1:用括号表示法表示为A(B(D,E),C(F))树2:用括号表示法表示为1(2(4,5),3(6))‘,’ 表示开辟一个新节点链接在双亲节点的右孩子上。‘)’ 表示双亲节点链接结束,把双亲节点取出栈。
2023-04-04 23:25:28
1257
2
原创 我的编程学习开端
提高自己的编程水平,让敲代码变得遂心应手,和志同道合的伙伴们一起学习一起进步,并凭此找到一份好的工作。我是一名大一学生,就读于仲恺农业工程学院,对未来有着美好的憧憬,希望通过自己的努力让自己变得更好。2.多敲代码提高自己的动手能力,写写博客巩固所学,与同学朋友交流编程知识、共同学习。同时,要求自己每周花在编程上的时间不低于20个小时。最想要进入的一家IT公司:腾讯。
2023-04-01 11:23:51
136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人