自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客项目系统的自动化测试

Chorme浏览器 版本号:112.0.5615.138(正式版本) (64 位)操作系统:win10。

2023-04-26 15:00:04 151

原创 [Java]排序

大小根堆的建立:首先对一个无序的序列进行完全二叉树的建立,然后从下往上,从右往左找到第一个非叶子结点开始比较,与该节点的孩子结点进行比较,必须满足大于所有孩子结点或者小于所有孩子结点。堆排序:每次将根结点和剩余树中最后一个结点进行交换并且输出最后一个结点,交换完之后将根结点与左右子树根结点比较,并与较小者(较大者)进行交换,重复直到叶子结点,得到新的堆。算法思想:第i趟从一个无序子列选择最小的元素与第i个元素交换,则第i趟结束后前i个元素都有序,以此类推,直到n-1趟后,待排元素只剩一个。

2023-04-09 20:46:35 236

原创 [Java]堆

堆可以看做一个完全二叉树,如果有一个关键码的集合K = {k0k1k2kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:且Ki

2023-04-08 14:36:54 116

原创 [Java]二叉树

2. 满二叉树:每一层含有最多的结点,i层一共含有(2^i)-1个结点,一个结点编号i,它的左子树是2i,右子树是2i+1,双亲为i/2向下取整。2. 有序树的次序是孩子结点相对于另一个孩子结点而言的,如果只有一个孩子结点,则不分左右次序,而二叉树无论孩子数是否为2,都需要确定左右次序。3. 完全二叉树:非满二叉树(把满二叉树中编号较大的结点去掉),最多只有一个结点的度为1,而且该结点的孩子仅仅是左子树。利用队列实现,根结点先入队,然后出队并访问出队结点,若有左右子树将左右子树的根结点入队,直到队列为空。

2023-04-08 14:24:05 83

原创 [Java]队列详解及基本操作

int val;

2023-04-05 16:09:04 1400

原创 [Java]栈的详解及基础操作

栈作为一种线性的数据结构同时拥有链表的许多特征,由于栈的底部逻辑是线性表,所以我们可以将其看做一个只有一边能进一边能出的数组。栈的特性为固定一端进行入栈操作和出栈操作,在可以入栈和出栈的一端,我们称之为栈顶,另一端不能进不能出的我们称之为栈底。栈是一种线性数据结构,虚拟栈是内存分配时需要在内存开辟的空间,栈帧则是内存空间开辟后的单块小内存空间。从图中我们可以清楚的看到栈的出入规律,最先进去的元素却后出栈,我们可以称之为后进先出。栈的操作包括创建,入栈出栈,获取栈顶元素等,接下来我会用代码来挨个演示。

2023-04-04 16:58:12 1161

原创 [Java]异常

在写程序的时候我们不能只顾着处理异常,处理异常之后代码还是要继续执行,为了防止代码处理完异常就停下的情况,我们会使用finally语句来继续执行继续往下走的代码。我们在写代码的时候,经常会见到如果代码写错的话,代码底部会标红,标红的部分称为受查异常,受查异常是不能通过编译的,所以无法直接运行。这种方法会在异常出现的时候直接进行异常处理,处理完一个异常在进行下一个代码段的执行,虽然会保证了代码的安全性,但是效率会下降。异常的抛出只是提示程序员发生了异常,而异常的捕获是真正的处理异常。

2023-03-30 11:09:14 31

原创 [Java]抽象类与接口

抽象类必须要被继承并重写才能实例化对象,如果子类不进行重写,则子类也是一个抽象类并使用abstract修饰。

2023-03-29 17:46:03 29

原创 [Java]多态详解

在上例中,我们在Animal中定义了一个eat方法,在cat dog bird子类中重写了父类的eat方法,在子类编写者在编写eat方法时,父类方法内部并不知道未来eat方法会指向哪个子类,此时每个子类调用父类方法会有不同的表现。向下转换一般会带有类型出错的危险,向下转换一般只会强制转换父类的引用,不能强制转换父类的对象,父类的引用必须指向当前目标的对象,在向下转型后父类可以调用子类的所有成员。简单来说,多态就是多种形态的意思,当要去完成某个行为的时候,不同的对象会产生出不同的状态。

2023-03-24 23:41:37 284

原创 [Java]包与继承

类的修饰符有public、private等,public和private中的成员,只能被类的内部使用,如果我们在类的前面不加public和private修饰符,就可以在同一个包中的其他类中使用,但是不能被其他包中的类所使用。使用public的访问范围太大,使用private的访问范围太小,所以为了更好的封装方法,我们选择使用protected修饰方法,这样只有该父类的子类和同一个包中的其他类可以访问。默认(也叫包访问权限): 类内部能访问, 同一个包中的类可以访问, 其他类不能访问.

2023-03-23 17:30:07 390

原创 [Java]实现双链表及其基本操作

如果下标在开始的位置则使用头插法,如果下标在链表末尾位置则使用尾插法,如果下标在中间位置,我们要先找到inedx 的位置,不需要找到其前驱结点的位置。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表任意一个结点开始,都可以很方便的访问它的前驱结点和后继结点。首先我们先来初始化双链表,注意双链表有两个地址域一个存放前驱结点的地址一个存放后继结点的地址。与双链表插入相同,我们也要判断下标是否合法,具体在哪个位置删除。两个指针在维护时比较麻烦。

2023-03-21 16:09:59 384

原创 [Java]实现单链表及其基本操作

带头结点的单链表第一个结点作为头结点,并在其下半部分存放第一个结点的地址,之后的每个结点都会在上半部分存放元素值,在下半部分存放下一个结点的地址。如果我们要在一个单链表表头插入一个结点,我们需要先让此结点成为一个新的头结点,并让该新头结点的地址域存放原来第一个结点的地址。如果我们要删除的结点是第一个结点,则直接使头结点连接第二个结点即可,如果是删除其他的结点,则需要找到该结点的前驱结点在进行删除。如果我们要在单链表的尾部插入一个元素,只要将原来单链表尾部的元素地址域指向下一个结点的地址即可。

2023-03-20 22:43:41 724

原创 [Java]实现顺序表及其基本操作

[toc]#一、顺序表的理解#二、顺序表的代码实现##1. 打印顺序表##2. 在 pos 位置新增元素##3. 判定是否包含某个元素##4. 查找某个元素对应的位置##5. 获取 pos 位置的元素##6. 给 pos 位置的元素设为 value##7. 删除第一次出现的关键字key##8. 获取顺序表长度##9. 清空顺序表#三、顺序表的缺点和优点总结。

2023-03-20 18:14:55 769

原创 [Java]类和对象

成员方法可以访问静态变量和静态方法,必须通过对象访问的方法去调用不需要对象就可以访问的变量和方法,逻辑通过static方法只能调用静态变量和静态方法等,static家族的成员可以相互调用(都属于静态域)当一个实例变量被static修饰后,它就开始表示类的属性,该类的所有对象共享此属性,且对象的属性值都是相同的,实例变量的属性被修饰后存放在JVM区。代码块:指的是使用{ }括起来的一段代码,称为代码块。类是描述某一对象的统称,对象则是这个类中的一个实例,有了类之后就能产生具体的对象,一个类可以产生多个对象。

2023-03-16 00:19:07 30

原创 [Java]数组的定义与使用

在函数内部的修改,也会影响到函数外部实参的数值,这是因为我们把数组的地址拷贝过去,在此地址上修改数值的时候,也会影响实参的数值。在调用完方法后,形参x的修改并不会对实参num产生影响,因为我们只是把实参num的一份拷贝传给了形参,不管形参如何修改都不会对实参产生影响,这也是我们所说的浅拷贝。这时我们对数组进行引用调用,相当于在内存中多开辟了一块空间来存放新的方法数组arr2,但是此数组中存储的是arr1的地址。部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的.

2023-03-15 12:04:41 263

原创 [Java]汉诺塔问题【图文讲解】

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

2023-03-13 17:58:05 201 1

原创 [Java]方法的定义使用、重载、递归

什么是方法(method)方法就是一个代码片段. 类似于 C 语言中的 "函数".方法存在的意义:1. 是能够模块化的组织代码(当代码规模比较复杂的时候).2. 做到代码被重复使用, 一份代码可以在多个位置使用.3. 让代码更好理解更简单.4. 直接调用现有方法开发, 不必重复造轮子.//定义一个方法public static 方法返回值 方法名称{方法体;return 返回值;我们举一个简单的从1加到10的数字例子来解释方法的使用。int n = 10;

2023-03-13 17:40:49 56

原创 [Java]运算符

当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值。注意: 逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean .>>>是无符号右移运算符,将一个数的二进制数看做无符号数,最右侧位不要了,左侧补0。>>是右移运算符,将一个数的二进制数向右移动一位,左边补符号位。

2023-03-10 17:04:37 73

原创 [Java]数据类型与变量

byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来接收结果. 如果非要用 int 来接收结果, 就需要使用强制类型转换。这是一个最简单的int类型变量,运行结果为10。

2023-03-09 21:41:44 39

原创 [Java]基础知识详解

1.JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。2.JRE(Java Runtime Environment)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。3.JVM(Java Virtual Machine)是整个Java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。其中JVM是编程的核心部分,大部分功能都是在JVM中实现的。

2023-03-09 20:33:20 49

原创 【C语言】数组的逆置与冒泡排序的实现

如果我们将第一个数作为基点,则将第一个数分别与数组的其他元素比较,直到碰到了比这个数更大的数则停止,如果没有比它更大的数,则将其移动到数组的最后一位,下一次排序我们只需要排序剩下的数而不需要管已经冒泡到最后一位的数字。此时我们的主要任务就是寻找数组元素的中心点sz/2,并且交换a[0]与a[sz-1],sz-1的原因是数组下标是从0开始的,所以下标为0-9。冒泡排序的算法思想是两个相邻的数相比较,如果较大的数在左边,则这两个数交换位置,并用较大的数继续与相邻的数比较。首先我们先初始化一个数组a[].

2023-03-07 22:57:35 106

原创 函数(二)+递归

函数的定义是指函数的具体实现,并交待函数的功能实现。我们写了一个简单的函数,并在其中引入了一个自定义的add函数,这是我们直接运行主函数的话,编译器是无法检测到add函数的存在,为了解决这个问题,我们可以进行一个对函数的定义。有了函数定义以后,编译器在检测到函数定义后便可以直接调用add函数。

2023-03-06 21:46:16 24

原创 函数(一)

自定义函数分为三个部分statement;//语句项ret_type 返回类型fun_name 函数名para1 函数参数我们先来看一个最基本的例子,写一个函数来交换两个数字的值。但是运行结果却并没有像我们想的一样交换了3与5,这是为什么呢?原因就在于我们主函数里的参数是实际变量,而传给swap函数的变量是形式变量,而形式变量是实际变量的一份拷贝,但是却另外开辟了新的存储空间,当存储空间的地址不同,新函数中交换的值并不会对主函数中的参数造成影响。

2023-03-04 16:29:31 22

原创 二分查找与猜数字游戏

假设我们要找的数字是3,我们会首先猜4或者5,【(left+right)/2】如果所猜数字是比给定数字小的话,我们的网查找范围就从0-7变成了0-3/4。首先我们先写主函数,在主函数里,我们首先要选择玩游戏或者退出,为了实现这一个功能,我们首先写一个menu菜单。我们得知任何一个程序书写的随机数都不是真正的随机数,但是有一个东西却是实实在在发生变化的,那就是时间。二分查找的原理是利用了数组下标分组查找,当我们定义一个数组时,我们将数组下标标为0-n作为查找范围,比如。至此,我们的程序便完成了。

2023-03-03 18:37:44 147

原创 循环语句【for do..while】

同时,我们也要注意flag的妙用,flag既可以成为判断结果是否终止的条件,也可以是是否取反取负数的条件,在本例中,我们先令flag为1,乘以sum的结果,得到了sum加一个正数的效果,在本轮加完后我们令flag取-1,得到了sum加上一个负数的效果,由此得到结果。这便是一个最基本的for循环例子,打印出0-9的数字。从中我们不难发现,表达式1为i= 0,表示i的初始值为0,每进入循环一次,便打印出该数字,打印完后便进入下一次循环,同时i+1,一直到i= 10时条件i

2023-03-03 16:32:57 274

原创 分支循环语句【if、switch、while】

c语言是一种【结构化】的程序设计语言,大致可分为三种结构:顺序结构选择结构【if switch】循环结构【while for do..while】现在将对这几种语言做一一的介绍。if语句语法结构:if(表达式)语句;else if(表达式)语句;else语句;举一个简单的例子:这便是一个最简单的if语句。如果if表达式中判断表达式为真,则执行该条语句。当然,我们也可以在其中加上一些其他的else if语句,使得整个程序变得更加饱满。现在我们来看接下来的一个程序代码。

2023-03-02 11:01:52 137

空空如也

空空如也

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

TA关注的人

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