- 博客(21)
- 收藏
- 关注
原创 顺序表(Arraylist)和链表(Linkedlist)
Linkedlist实现了List。Linkedlist的底层是双向链表。Linkedlist没实现RandomAccess接口,表明不支持随机访问。Linkedlist在随机插入和删除时,时间复杂度为O(1)。
2025-04-16 22:51:03
136
原创 Map&Set常用的集合类(二叉搜索树,哈希表)
Set继承了Collection。保存的元素不会重复。保存的元素不能修改。保存的元素无序,和List不同,如果有两个:List {1,2,3},List {2,1,3},认为两个List不相同,但是将List换成Set,则认为两个Set相同。Set的核心操作:add,remove,contains。Set是接口,需要创建实现Set的类,可以通过两种方式进行实现,TreeSet和HashSet,TreeSet的底层是红黑树,Hashset底层是哈希表这种数据结构。
2025-04-13 20:55:15
529
原创 优先级队列(堆),比较器(Comparator,Comparable)
优先级队列(PriorityQueue),比较普通的队列可以提供了一个基本操作,返回最高优先级元素。PriorityQueue的底层使用了堆这种数据结构,而堆则是在完全二叉树的基础上进行调整。堆的特点:堆的父节点一定是大于(大堆)或小于(小堆)子节点。堆的逻辑结构是二叉数,但存储结构是一维数组。堆一定是完全二叉树。普通二叉树不使用一维数组存储的原因是二叉树的节点可能为空,要还原二叉树就要将空节点null也存入数组,使空间利用率较低。
2025-03-30 10:49:23
500
原创 排序算法(插入,希尔,选择,冒泡,堆,快排,归并)
插入排序的主要思想是额外申请一个空间cur,让cur一开始等于数组的第1号位置,设置i=1,让i-1的元素与其比较,如果arr[i-1]>arr[i],就让arr[i+1] = arr[i],当进行到最后一次对比结束,i=-1,再让arr[i+1] = cur。排序算法的特点是序列越有序,时间效率越高,下面的希尔排序也体现出来。时间复杂度:O(n^2)空间复杂度:O(1)是一种稳定的排序算法。
2025-03-24 22:28:44
761
原创 抽象类和接口
JAVA中被abstract修饰的类被称为抽象类,abstract修饰的方法称为抽象方法,抽象类也可以包含普通方法和普通属性,甚至构造方法。
2025-02-25 00:15:50
290
原创 字符串的转换
如果只是将字符串加减上一个数字,则会触发字符串的拼接,要想实现字符串加减一个数得到一个整形加减结果,则要使用Integer.parseInt()。数字转成字符串有两种方法,一种是通过字符串的拼接,一种是调用valueof方法。字符串转小写使用toLowerCase,字符串转大写用toUpperCase。当要打映的数为double时,则用Double.parseDouble()。这里注意打映本来的字符串是没有改变的,证明转大小写是重新创建新的字符串。
2025-01-16 19:50:19
233
原创 理解JAVA中static关键字
在JAVA中,被static修饰的成员变量和成员方法被称为静态变量和静态方法,我们习惯称为类变量和类方法,其不属于任何具体对象,而是属于全体对象。普通成员属性会根据对象的创建,当调用普通属性,在栈上新开辟一块空间,若又创建一个新的对象,则会重复上面的步骤,所以每次调用都会有新的空间存储不同的值。但类属性不会像普通属性一样,类属性会在JVM中的方法区存储一个值,所有对象都是共用这一块空间,里面的值和最后一次调用修改的一致。
2025-01-16 14:36:09
125
原创 JAVA实现汉诺塔问题
我们要将A上的盘子放到C上,要先将A最小的盘子盘子放到C,然后将A中间的盘子放到B,再将C的盘子放到B上,把A最大的一个盘子移到C,把B最上的盘子放到A,把B上的放到C,最后将A上盘子移到C,就完成交换。现在A上有一些大小不一盘子,盘子由大到小自下而上放置,要将A上的盘子转移到C上,并且大盘子一定要在小盘子下面。汉诺塔是递归思想中的一道经典例题,电影《猩球崛起》中就有描写汉诺塔。汉诺塔问题就是有三个柱子,我们设为A,B,C,如图。现在假设A上有3个盘子。最终3个盘子的效果为。
2025-01-03 17:31:28
451
原创 JAVA中的方法和数组介绍
return x+y;1.public static 是修饰符,现阶段我们只要这样记住,在后期作者会进行具体介绍,int 是返回类型,sum是方法名,方法名可以为任意,但不能为中文,括号内的为形式参数,return是返回值。2.返回值类型:当方法中有返回值时,返回值类型必须和返回值相同。例如:上面的X+Y是两个整形相加,所以返回值类型是int。当没有返回值时,返回值类型是void。3.参数列表:当我们要进行传参时,实参和形参类型相同,多个参数用逗号隔开。例如(int x,int y)。
2024-12-10 22:19:16
591
原创 c语言中杨辉三角的实现
变成这样之后我们可以将它放进一个10*10的二维数组,数组的第一列为1,数组的对角线也为1,那我们如果设行为i,列为j,只要判断[i][1]=1,i=j=1,就完成外面的打映。杨辉三角是一道经典的算法题,只要明白其主要思想,就能用不同的编程语言实现,今天介绍其思想和用c语言打映。
2024-12-06 23:36:40
700
原创 c语言扫雷的实现
带.c的文件是进行测试和代码的实现,.h文件是函数的声明,在扫雷中的一个重要思想,是要创建两个数组,一个用来实现逻辑,另一个进行打映。扫雷和和我们往期写的三字棋的大概模板相似,都是要分模块进行书写。
2024-12-02 18:34:35
544
原创 打印二进制的奇数和偶数
之前我们实现了二进制中1的统计,那我们也可以将二进制中的每一位打映并且将奇数和偶数也表达出来。那么就是奇数和偶数的判断了,这个也可以轻松实现了,只需要让奇数和偶数分别判断就行了。
2024-11-29 22:59:59
606
原创 实现水仙花数的打映
了解定义,接下来就是逻辑的实现,首先要知道数的位数,用while就可以实现,接下来就是立方相加,这里介绍两种方法,第一种是常规的方法,将要判断的数%10,取。寻找水仙花数是一道经典的算法题,水仙花数定义是一个整数的每一位乘以位数的立方相加等于这个数本身,例如153=1^3+5^3+3^3,所以153是水仙花数。
2024-11-26 23:40:09
465
原创 如何统计整形二进制中1的个数
整形在数内存中是以二进制的方式存储,要想了解整形在内存中的存储方式,我们要先了解原码,反码,补码。如果要打映出数据,则要将补码转换为原码,三者的关系是原码按位取反得到反码,反码加一得到补码。内存中以补码的形式存储整形数据类型,并且我们知道一个整形在内存中占32比特。这样就统计了一个1,接下来让每一位都向右移,完成32次。这样就可以明显观察&操作符的效果。
2024-11-23 22:29:32
464
原创 了解和使用函数递归
函数递归是C语言中一种重要的实现方式,通俗一点就是函数自己调用自己。函数递归可以将大事化小,把一个大的问题拆解成一个个子问题,递是发散的意思,归是回归的意思。用一道例题来演示:将1234中每一位数分别打映出来,例如:1 2 3 4。这里就是函数自己调用自己,最后死循环打映main函数中的内容。1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。2.每次递归调用之后越来越接近这个限制条件。
2024-11-22 13:36:41
369
原创 C语言三字棋游戏的实现
game.h是头文件,jim.c用来存放分装的函数,test.c存放主函数,在test文件中我们要先构建函数主体。三字棋游戏是在3×3的棋盘上进行下棋的游戏,如果有一方的三个棋子连续,则一方获胜,下面我们用c实现它。首先我们要建立一个头文件和两个源文件,在头文件中存放函数的声明,一个实现游戏,一个测试函数。函数测试jim.c文件。
2024-11-19 18:41:37
304
原创 冒泡排序的实现
为了方便理解,我们设一组数{1,2,3,4,5,6,7,8,9},如果想自左向右由大到小排序,我们假设数组的第一位是最大的,让第一位与第二位进行比较,而如果第二位数大于第一位,第一位又是最大的,所以我们只要把第二位的值与第一位交换一下就行了,以此类推,当最后一次交换结束后,数组变为{2,3,4,5,6,7,8,9,1},这样就完成了一次交换,完成这样一次操作我们交换了八次,我们可以将它放入for中。首先我们要有一组数,比如可以自己设一个数组,然后利用for循环输入。
2024-11-15 22:36:30
408
原创 猜数字游戏的实现
首先我们要打映菜单,这个用printf() 就可以轻松实现,接下来我们要选择是否要进行玩游戏,可以用判断语句进行判断,如果为真,就开始进入游戏,反之则退出游戏,那么我们可以令输入1为玩游戏,输入0为退出游戏,因为要输入的值为整形,我们可以用switch来实现判断,case后分别设1和0,用default处理除了0和1以外的值,进入游戏后为了可以多次游玩,我们可以使用循环语句do while循环,以此达到先打映菜单后执行语句的目的。猜数字游戏的规则是由系统随机生成一个数,由玩家跟据提示输入值猜取这个随机数。
2024-11-07 19:27:09
207
原创 关于C中分支与循环语句的基础
在分支中常见的判断语句有if语句和switch语句,if()语句的基本用法是在()中输入表达式或变量,通过判断表达式和变量的真与假来实现语句的实现,如果内容为真就执行if中要实现的指令,反之则不执行,但当我们输入1时,也可以执行指令。最常见的循环语句是for循环,形式为for(a;c),a中存放初始化表达式,b中存放判断表达式,c中存放调整语句,当初始化表达式进入for循环时,先会被判断表达式判断,如果结果为真,则会进行下一步调整,调整后的值会被执行,执行后重新输入,进行下一次循环。do while循环。
2024-11-05 22:39:37
342
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人