自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 匿名内部类

匿名内部类。

2024-04-12 12:35:39 206

原创 Object类里面的clone方法与接口cloneable的理解

今天在进行使用clone方法时产生了一个疑问,为什么Object类明明有clone()方法,但为什么还要加上cloneable这个接口呢,下面我们就来解答一下为什么要重写clone()方法非要加上cloneable接口,重写的clone()方法,是重写的接口的方法呢还是Object类里面的方法呢。

2024-04-11 19:32:43 336

原创 类与对象中C++

上次我们主要介绍了类是如何定义的,类的封装,类对象模型,以及非静态成员函数里隐藏的this指针的作用,它们都是在C的基础上,兼容C,并在C的基础上完善一些C无法实现的功能,比如说我们C++的命名空间解决了C的命名空间污染等问题,访问限定符解决了C在结构体中造成的随意访问的问题,最后通过对比栈的实现方式,来展示了C++在类的方面的优势,下面我们将继续讲解类与对象中的构造方法以及运算符重载等在C++中的作用以及它们的优势。无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。

2024-03-29 13:00:15 723

原创 类与对象上C++

声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::一般情况下,更期望采用第二种方式。

2024-03-25 14:58:59 662

原创 C++入门

C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面、IO方面、函数方面、指针方面、宏方面等。为后续类和对象学习打基础。

2024-03-24 16:32:00 1113

原创 二叉树初阶数据结构C

设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。学习二叉树结构,最简单的方式就是遍历。遍历是二叉树上最重要的运算之一,也是二叉树上进行其它运算的基础。树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,既然保存值域,也要保存结点和结点之间的关系,实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。

2024-03-24 12:49:29 1085

原创 排序总结C

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。排序OJ(可使用各种排序跑这个OJ):数据元素全部放在内存中的排序。

2024-03-20 19:55:11 1195

原创 归并排序C

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;动图如下图所示,将子序列化为有序之后,将有序子序列保存到临时数组,然后再将临时数组复制回原数组,其实就是合并,只不过将一个大的区间换成了一个一个小的区间,通过后序来完成对整体的划分。方法:开创一个数组,大小为两个有序区间加起来的长度,然后比较,将小的放入新开的数组中,结束后再赋值回去。

2024-03-20 16:20:14 413

原创 交换排序C

快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。

2024-03-16 17:00:04 800 1

原创 堆数据结构C

现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段,所以堆在逻辑结构上是一个完全二叉树,而在物理结构上确是一个跟顺序表一样,可以存储在数组中。,kn-1 },把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,堆中某个节点的值都要大于其子节点,我们将根节点最大的堆叫做最大堆或大根堆,堆中某个节点的值都要小于其子节点,我们将根节点最小的堆叫做最小堆或小根堆。

2024-03-14 14:32:58 920

原创 选择排序C

思想:如果排升序的话:建立大堆,交换根节点与最后一个节点,然后将此刻最后一个节点不算入此堆里面,之后进行向下调整,去找次大值,同理,排降序反之。思想:挑选出数据中最小的,交换到数组前面(后面),再挑选出数据中最大的,交换到数组后面(前面),然后再划分成子问题进行相同计算。因为选择排序无论他面对的数列有不有序,它的时间复杂度依然是O(N^2)而直接插入排序,在数列有序的时候,它的时间复杂度甚至可以达到O(N)所以则有以下公式F(h) = 2 ^ (h-2)得F(h) = 2 ^ (h-1) - h。

2024-03-11 13:45:02 200

原创 插入排序C

我们将n个数分为gap组,每个组n/gap个数,如果最坏情况下错略的时间复杂度为(1+2+3+…+n/gap-1)*gap。希尔排序相较于直接插入排序,在时间复杂度上有了极大的改善,可以达到O(N^1.3)gap越小时也为O(N),因为预排序几乎把序列排完了,所以时间复杂度也是O(N)最坏:1+2+3+…+n-2为一个等差数列,所以求和为O(N^2).可以知道gap越大的时候为(1+2+3)*gap。直接插入序列的时间复杂度为O(N^2),最好:O(N),数列接近有序,不用排序。

2024-03-09 15:56:09 127

原创 栈和队列(数据结构)

上次我们讲完了链表,相信大家对于链表已经有了一个更深刻的理解,下面我们来说一说新的数据结构栈和队列栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。图片描述:入数据在栈顶,出数据也在栈顶队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。

2023-06-01 09:20:19 121

原创 数据结构链表

上次讲完了顺序表,留下了许多问题,例如插入删除的复杂度太高,扩容造成的空间浪费问题,那么有没有可以不扩容就可以存储数据的结构呢,它的插入删除能不能更快呢,答案是有的,没错那就是我们线性表当中的链表,下面我就来讲一下链表这个数据结构。

2023-05-14 17:58:14 152

原创 动静态顺序表

大家都知道要学好编程,数据结构是十分重要的一门课,而线性表是一种在实际中广泛使用的数据结构,那么线性表是什么呢,线性表是n个具有相同特性(数据类型)的数据元素的有限序列,常见的线性表有:顺序表、链表、栈、队列、字符串…但不要误会的是线性表在逻辑上是线性结构,也就是一条连续的直线,但在物理结构上不一定是连续的,所以线性表在物理上存储时,通常以数组和链式结构形式存储,下面我们就来学习一下线性表中的顺序表吧。

2023-05-13 17:07:39 355

原创 刷题(二分查找的使用)

最近老师让我们在课上做了两道关于二分查找的题,掉进了不少坑,现在来总结一下。

2023-04-14 14:42:54 634

原创 java静态内部类

2. 静态内部类当中不能访问类外的非静态成员及方法(因为静态内部类对象的创建是通过类名创建的,所以没有外部类对象的引用,因此自然访问不了非静态成员方法与成员),非要访问的话可以创建一个外部类的引用来进行访问。3. 创建内部类对象的时候不需要先创建一个外部类对象。1.获取内部类的对象的属性或方法。

2023-03-25 20:41:09 503

原创 java实例内部类

【代码】java实例内部类。

2023-03-25 20:36:11 361

原创 Java中Arrays类(操作数组的工具)

以上就是今天所讲的Arrays类里面的一些常用方法,它可以使我们更方便的操作数组,当然还有许多种方法在Arrays类里面,有兴趣的童鞋可以去查一查。

2023-03-14 11:24:25 3377 1

原创 java当中的重写

在子类中创建了一个与父类中名称相同、返回值类型相同、参数列表的方法相同,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖、方法复写。

2022-09-06 19:57:33 368

原创 java static修饰成员属性与方法

因此是在JVM加载类时才创建空间并初始化的。,也可以用对象来访问,但是往往比较推荐前者。2. 由static修饰的成员变量,是。

2022-08-15 15:15:05 227

原创 二维数组的使用

二维数组的使用。

2022-08-14 20:15:55 121

原创 java逻辑运算符与位运算符

逻辑运算符,与位运算符

2022-08-08 19:06:57 145

原创 java初识

java的基本数据类型,标识符,隐式显式的转换,整型提升

2022-08-07 11:07:56 74

原创 数据结构顺序表的实现

文章目录前言 一、顺序表是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言在我们生活当中我们所用的QQ,vx,它们所展示的界面(如群的名字,人的昵称)这些就是一组数据,这些数据都被保存在内存当中,界面是去内存当中将这些数据拿出来然后展示在这个界面上,所以它的底层可以用顺序表,或者链表来进行存储这些数据。一、顺序表是什么?顺序表是在计算机内存中以数组的形式保存的线性表,顺序表是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可...

2022-05-05 23:05:20 748 9

原创 c++函数重载

文章目录前言一、函数重载是什么?二、函数重载的作用三、函数重载的满足条件四、函数重载的注意事项1.引用作为重载条件2.函数重载碰到默认参数3.函数的返回值不可以作为函数重载的条件总结前言最近学习了函数重载,里面有许多易错的,我平时遇到的一些错误,都总结在了下面,希望可以对你们有所帮助。一、函数重载是什么?重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。

2022-05-01 22:31:56 1829 6

原创 三子棋游戏

文章目录一、打印菜单二、初始化棋盘三、打印棋盘四、玩家下棋五、电脑下棋六、判断输赢七、整体分析八、game.h八、game.c九、test.c总结一、打印菜单void menu(){ printf("**********************************\n"); printf("*******1.play 0.exit*******\n"); printf("**********************************\n");}二、初始化棋盘

2022-04-30 14:21:14 1084 6

原创 字符串逆置的二种解法

字符串逆序的二种解法

2022-04-28 13:04:21 2270 2

空空如也

空空如也

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

TA关注的人

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