自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Map&Set 1

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下的二叉树:1、若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。2、若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。3、它的左右子树也分别是二叉搜索树。下图是一棵二叉搜索树,它的中序遍历就是升序的。

2025-03-31 18:32:06 829

原创 HashMap底层代码解读

在IDEA中,双击shift键,在类中搜索HashMap就可以找到HashMap的源码,如图所示:关于Serializable这个接口,它的作用如下: 这里的put方法返回了putVal方法,下面我们来分析putVal方法:

2025-03-25 21:38:11 109

原创 一文助你搞定所有排序

在编程语言中常见的排序算法有以下几种: 当插入第 i (i >= 1)个元素的时候,i 前面的元素已经排好序,此时用arr[i]与前面的元素进行比较,找到适合的位置插入即可,如果arr[i]的元素小于原来位置上的元素,原来位置上的元素则需要向后移。当arr[i]大于原来元素元素时说明找到了arr[i]该插入的位置,直接将arr[i]插在当前位置的后一个元素即可。 如图,要将当前数组的元素直接插入排序: 我们需要先定义两个下标i = 1, j = i - 1,再定义一

2025-03-22 15:33:40 989

原创 优先级队列 2

Java集合框架中提供了和两种类型的优先级队列,,这里主要介绍PriorityQueue。关于PriorityQueue的使用要注意:1.使用时必须导入PriorityQueue所在的包,即:2. PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常,如下图:3. 不能插入null对象,否则会抛出NullPointerException。4. 没有容量限制,可以插入任意多个元素,其内部可以自动扩容。

2025-03-19 23:29:29 854

原创 优先级队列(PriorityQueue)_1_模拟实现优先级队列

1、概念1、概念前面介绍过队列,,但有些情况下,,这时候,使用队列显然不合适了。在这种情况下,。这种数据结构就是。

2025-03-19 00:11:43 584

原创 二叉树_4_面试题汇总

但是,在buildTreeChild方法中,priIndex是作为一个局部变量参数出现的,局部变量的生命周期的随着方法结束而结束的,在递归过程中,我们的预期结果根据先序遍历,pi = 1创建F,pi = 2 创建H,然后回归到F,pi再等于 3创建I,但在H回归到F的时候,pi是局部变量,pi由H的2又变回的F的1,导致无法像预期一样到 3 ,创建I。如下图:3的左子树高度为1,右子树高度为2,高度差的绝对值为1,20的左子树高度为1,右子树高度为1,高度差为0,所以这是一颗平衡二叉树。

2025-03-15 21:31:46 992

原创 二叉树_3_模拟实现二叉树

这里我们使用二叉树的孩子表示法:成员变量有val(存储二叉树的值),left(存储二叉树左孩子的引用),right(存储右孩子的引用)。这里我们还需要在静态内部类外在创建一个根节点root(方便我们后续对二叉树进行操作)。

2025-03-11 22:03:05 782

原创 二叉树_2(一文搞懂二叉树遍历)

3.2 二叉树的遍历3.2.1遍历 遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所作的操作依赖于具体的应用问题(比如:打印结点内容,结点内容+1)。遍历是二叉树最重要的操作之一,是二叉树上进行其他运算的基础。 如果用N代表根结点,L代表根结点的左子树,R代表根结点的右子树,则根据根结点的先后次序有以下遍历方式: NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点--->根

2025-03-10 17:07:48 900

原创 二叉树 1

树是一种的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合。。它具有以下的特点:1、有一个特殊的节点,称为根节点,根节点没有前驱节点2、除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1T2......Tm,其中每一个集合Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继3、树是递归定义的。

2025-03-08 16:45:59 533

原创 栈和队列2

上篇文章,我们讲到栈是用数组实现的,它入栈和出栈的时间复杂度都是O(1),那我如果要使用链表来实现栈应该怎么做呢?那我们先假设使用(找到链表的倒数第一个元素)。(找到链表的倒数第二个元素)。那么此时,有聪明的同学可能会想到:那我如果给它再加一个尾巴节点时间复杂度又是多少呢?因为有last节点,时间复杂度变为时间复杂度仍为,因为是单链表last只能找到last后面的节点无法找到它前面的节点。时间复杂度。由于栈的特性,时间复杂度也为因此,在使用单链表实现栈时一般采用头插法。

2025-03-06 17:07:49 1084

原创 栈和队列 1

第一个弹出的为右操作数,第二个弹出的为左操作数,计算完后放回栈中,重复上述过程。图解如下:

2025-03-03 22:40:29 852

原创 链表3(LinkedList)

因为是任意位置插入,在0位置我们直接调用头插法函数;在size()位置直接调用尾插法函数;下标不合法,抛异常。完整代码:

2025-02-25 17:18:46 869

原创 链表(LinkedList)面试题

解题思路:将新的链表分成两段,设置bs(前面链表的头)、be(前面链表的尾)、as(后面链表的头)、ae(后面链表的尾),再设置一个cur值遍历链表,将值小于x的往前面链表中放,将大于x的值往后面链表中放,需要注意如果是前面或后面链表的第一个节点需要让头和尾一起指向它。解题思路:先定义一个新链表的头节点,再设计一个tmp等于这个头节点,它用来连接这个链表的元素,再通过两个链表的头节点对里面的元素进行比较,小的在前,大的在后,当有一个链表走完则退出循环,将剩余链表的元素塞在新链表后面。那么什么是链表有环呢?

2025-02-24 17:44:03 1016

原创 顺序表常用操作和笔试题

如下代码所示:创建了一个默认空间为10的整型顺序表,如果空间不足则会以1.5倍扩容。创建一个空间为15的整型顺序表创建一个顺序表其中存储的元素为其他数据结构(代码中以链表为例)

2025-02-18 23:18:36 812

原创 链表(LinkedList) 1

上期内容我们讲述了顺序表,知道了顺序表的底层是一段连续的空间进行存储(数组),在插入元素或者删除元素需要将顺序表中的元素整体移动,时间复杂度是O(n),效率比较低。因此,在Java的集合结构中又引入了链表来解决这一问题。

2025-02-08 01:05:20 1080

原创 顺序表(ArrayList)

/新增元素 默认在最后添加//如果满了,则要进行扩容//扩容。

2025-02-04 22:13:28 368

原创 抽象类和接口

接口是多个类的公共规范,是一种引用数据类型。(类实现接口可以看作类具有xxx特性特点:1、接口中的成员变量默认为public static final的(常量),接口中的成员方法默认是public abstract的(抽象方法在接口中的成员变量和成员方法无需修饰,这样能够使代码更加简洁2、接口中不可以有普通的方法,但是Java8后开始允许在接口中定义default方法,这种方法可以有具体实现。3、接口中的方法如果被static修饰,那么也可以有具体实现。4、接口不能通过new实例化。

2024-11-25 23:26:39 585

原创 封装、继承、多态

将属性、方法等设置为私有成员,私有成员只能在本类中使用,可以防止其他类对数据随意修改。

2024-11-18 23:18:36 1139

原创 类和对象1

面向对象是解决问题的一种思想,主要依靠对象交互完成一件事情。在这一思想中,我们只关心完成这件事情的对象,并不关心完成这件事情的过程。例如:完成洗衣服这件事,我们只要负责把衣服丢进洗衣机里漂洗,其中的对象就是:人、衣服和洗衣机。Java就是一门面向对象的语言,那么Java是如何产生对象的呢?让我们接着往下看!2、对象的产生在Java中,对象的产生依赖于类。我们可以通过class+类名来创建一个类,在类中我们可以创建对象的一些特性(成员变量也可称为属性)和对象的一些行为(

2024-11-12 20:04:14 803

原创 Java数组及其类方法

数组在Java中的定义和c语言中的相同,都是:相同类型元素的集合。下面我们看看如何定义一个数组,以下是初始化数组的三种形式。可以看到等号左边均是数组类型+数组名,等号右边如果初始化空间则不能对数组进行赋值,如果赋值则不能初始化空间,Java会根据你大括号中的值的个数初始化空间。

2024-11-05 22:53:20 835

原创 冒泡排序(Bubble Sort)

上面是一串冒泡排序的代码,通过双层for循环实现,外层for循环遍历数组,内层for循环则是冒泡排序的实现。冒泡排序适合用于教学和学习基础的排序概念,但在实际应用中,由于其效率低下,通常不推荐用作大型数据集的排序方法。但是,在处理较小的或几乎有序的数组时,它仍然能够表现出一定的效果。PS:上面是每一次冒泡排序的过程的实现,由于时间问题后面的排序过程就不过多解释。重复地遍历待排序的数列,比较相邻的元素,如果它们的顺序错误就将它们交换过来。这个过程会重复进行,直到没有需要交换的元素位置,即数列已经排序完成。

2024-10-19 19:28:32 385

原创 函数的递归与迭代

函数的递归可以通过字面意思分为两部分:递推和回归(下面解释的图片中,红线是递推的过程,黑线是回归的过程),它是程序调用自身的编程技巧,通常把一个大型的问题层层转化为一个与原问题相似的规模较小的问题来求解,它的主要思考方式在于:把大事化小。

2024-10-12 22:04:33 1122 1

原创 函数和参数

自定义函数,顾名思义:就是由程序员自己定义的函数,自定义函数相比库函数更加灵活多变,能解决的问题也自然更多。下面是一个自定义函数的结构表示:x : y;int n = 20;return 0;

2024-10-08 20:59:14 1910

原创 循环分支结构练习(内附猜数字小游戏)

【代码】循环分支结构练习(内附猜数字小游戏)

2024-10-02 21:58:27 646

原创 比较两种查找方法各自的优点与缺点

遍历查找适合小规模或无序数据及简单情况,易于实现,但效率低。二分查找适合大规模有序数据,高效快捷,但对数据有序性有要求。根据具体场景和需求,选择合适的查找算法可以显著提高性能和效率。

2024-10-01 16:39:43 2169

原创 getchar()的使用和妙用

这是因为scanf和getchar并不是从键盘上直接读取数值,而是要通过一个缓冲区进行读取-----键盘输入的内容进入缓冲区,然后getchar和scanf再读取里面的内容,而上述代码中,scanf读取了字符串1321312,而缓冲区中剩下了\n被getchar读取,因此显示确认失败。这里我们使用putchar实现字符的输出,在while循环中嵌套getchar语句实现无限输入(注意:这里的EOF是读取失败的意思,在代码运行时使用ctrl+Z即可使getchar()读取失败,跳出循环)。

2024-09-28 13:49:56 3416 1

原创 初识结构体

如上图所示,通过struct构造结构体函数,然后在结构体函数中定义结体构变量,再在main函数中进行调用struct函数调用方法是struct+函数名+变量={结构体变量的值},printf()输出变量时需要通过结构体变量.结构体成员名。如上图所示 ,将结构体作为函数参数使用,因为没有定义结构体变量的缘故,因此通过指针返回变量,*为解引用操作符,*ps返回的就是结构体变量,也就是图中的&b2。设计程序时,最重要的步骤是选择表示数据的方法,在很多情况下,简单变量甚至是数组都还不够。

2024-09-27 21:34:12 341

原创 内存和指针

在日常生活中,相信大家对内存和指针都很熟悉了,如果你还没有很懂,那么就让我来为你讲述下内存和指针所存在的关系。

2024-09-23 16:24:39 407 1

原创 static修饰局部变量、全局变量和函数的作用

static中文意思是静态的,在c语言中是一种常见的关键字,它能够修饰全局变量、局部变量和函数。那么它在修饰这三者的作用是是什么呢?别急,让我们慢慢往下看。

2024-09-21 00:06:54 457 2

原创 一名编程初学者的自我介绍

现在我的学习方向是先补足c语言(学校教的不深入),然后学习数据结构,学习算法,然后学习Java,最后去参加一些竞赛或者完成一些项目来丰富自己的简历。我是一名双非本科大二学生,专业是计算机科学与技术,大一时懵懵懂懂,不清楚如何学习一门语言,荒废了一年的大好时光。在我向师兄请教,上网查阅资料之后 ,才了解到我这个专业面临着很大的就业压力,市场已经饱和而计算机专业学生过剩。希望能在毕业后找到一份月薪8k以上的工作,如果找不到,也能通过这门技术有一份收入来源,不至于啃老。

2024-09-19 10:50:19 394

空空如也

空空如也

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

TA关注的人

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