自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java与数据结构——多叉树

(2)B树的搜索:从根节点开始,对节点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入关键字所属范围的儿子节点;(1)B树的阶:节点的最多子节点个数,比如2-3树的阶是3,2-3-4树的阶是4;(2)有两个子节点的节点叫做二节点,二节点要么没有子节点,要么有两个子节点;(3)有三个子节点的节点叫做三节点,三节点要么没有子节点,要么有三个子节点;(2)有两个子节点的节点叫做二节点,二节点要么没有子节点,要么有两个子节点;(3)有三个子节点的节点叫做三节点,三节点要么没有子节点,要么有三个子节点;

2022-10-27 17:17:29 1903 1

原创 Java与数据结构——平衡二叉树(AVL)

给定数列{ 10,12,8,9,7,6 },构建 AVL 树,当插入 6 时,发现 leftHeight - rightHeight > 1 ,此时不再是一个 AVL 树,进行。:给定数列{ 4,3,6,5,7,8 },构建 AVL 树,当插入 8 时,发现 rightHeight - leftHeight > 1 ,此时不再是一个 AVL 树,进行。(3)把新节点的右子树设置成当前节点的右子树的左子树,newNode.right = this.right.left;

2022-09-29 18:05:46 1040 3

原创 Java与数据结构——二叉排序树(BST)

对于二叉排序树的任何一个非叶子节点,要求其左子节点的值比当前节点的值小,其右子节点的值比当前节点的值大。比如,针对给定数列{ 7,3,10,12,5,1,9 }对应的二叉排序树为。3)如果添加节点的值大于等于当前子树根节点的值,如果当前子树根节点的右子节点为空,则 this.right = node,否则递归向当前子树根节点的右子树添加该节点。2)如果添加节点的值小于当前子树根节点的值,如果当前子树根节点的左子节点为空,则 this.left = node,否则递归向当前子树根节点的左子树添加该节点;

2022-09-28 11:11:29 479 2

原创 Java与数据结构——赫夫曼编码

(3)编写一个方法,将准备构建赫夫曼树的节点放到 List,形式 { Node[data= 'a', weight = 5] , Node[data= ' ', weight = 9] , ......},体现d:1 y:1 u:1 j:2 v:2 o:2 l:4 k:4 e:4 i:5 a:5 空格:9;注意:赫夫曼编码是无损压缩,赫夫曼树根据排序方法不同对应的赫夫曼编码可能不同,但是对应的 wpl 是相同的,都是最小的,其赫夫曼编码的长度也是一样的。

2022-09-27 14:22:28 392

原创 Java与数据结构——树的应用(赫夫曼树)

若规定根节点的层数为 1 ,则从根节点到第 L 层节点的路径长度为 L-1;节点的带权路径长度为:从根节点到该节点之间的路径长度与该节点的权的乘积。(5)树的带权路径长度:树的带权路径长度规定为所有叶子节点的带权路径长度之和,记为 WPL,权值越大的节点离根节点越近的二叉树才是最优二叉树。(4)再将这棵新的二叉树,以根节点的权值大小再次排序,不断重复 1~4 的步骤,直到数列中所有的数据都被处理,就得到了一棵赫夫曼树。(3)组成一棵新的二叉树,该新的二叉树的根节点的权值是前面两棵二叉树根节点权值的和;...

2022-08-12 21:27:37 297

原创 Java与数据结构——树的应用(堆排序)

2)此时,从最后一个非叶子节点开始(叶子节点自然不用调整,第一个非叶子节点 arr.length/2 - 1 = 5/2 - 1 = 1,也就是下面的 6 节点),从左至右,从下至上进行调整,4)这时,由于交换导致子树【4, 5, 6】结构混乱,继续调整,【4, 5, 6】中 6 最大,将 4 和 6 进行交换。应用实例:给你一个数组{4, 6, 8, 5, 9},要求使用堆排序,将数组升序排列。构造初始堆,将给定的无序序列构造成一个大顶堆(升序大顶堆,降序小顶堆)(1)将待排序的序列构造成一个大顶堆;.

2022-08-11 14:44:07 481

原创 Java与数据结构——树(二)

1)n 个节点的二叉链表中含有 n+1 【公式: 2n-(n-1) = n+1】个空指针域。利用二叉链表中的空指针域,存放指向该节点在某种遍历次序下的前驱和后继节点的指针(这种独家的指针被称为“线索”);应用实例:给你一个数组{1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历,前序遍历的结果应该为1,2,4,5,3,6,7,进一步完成对数组的中序遍历和后序遍历。(2)这种加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。中序遍历的数列为{8, 3, 10, 1,14, 6}....

2022-08-10 11:37:52 219

原创 Java与数据结构——树(一)

2)如果删除的是非叶子节点,则删除该子树;2. 如果当前节点的 no 与查找值相等,则返回当前节点,否则判断当前节点的左子节点是否为空,如果不为空则继续递归前序查找;3. 如果左递归前序查找,找到节点,则返回该节点,否则继续判断当前节点的右子节点是否为空,如果不为空则向右继续递归前序查找。2. 因为设定的二叉树是单向的,所以我们判断的是当前节点的子节点是否需要删除,而不能去判断当前这个节点是否需要删除;2. 如果找到,则返回该节点,否则判断当前节点的右子节点是否为空,如果不为空,则向右递归后续查找;....

2022-08-09 20:52:44 289

原创 Java与数据结构——哈希表

哈希表(散列表):是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射的函数叫做哈希函数,存放记录的数组叫做哈希表。 实例: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(ID, 性别, 年龄, 名字, 住址,......),当输入该员工的 ID 时,要求查找到该员工的所有信息。添加员工信息时,保证按照 ID 从低到高插入。 代码实现:...

2022-07-20 21:32:11 247

原创 Java与数据结构——查找算法

2.1findVal>arr[mid],说明你要查找的数在mid的右边,因此需要递归地向右查找;2.2findVal

2022-07-20 15:52:46 316

原创 Java与数据结构——排序算法(二)

希尔排序插入排序存在的问题:当需要插入的数是较小的数时,后移的次数明显增多,排序效率受到影响。为解决这一问题,希尔于1959年提出了一种排序算法。希尔排序是简单插入排序经过改进之后的一个更高效的版本,也被称为缩小增量排序。基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰好被分成一组,算法终止。分组 ==> 简单插入排序 ==> 缩小增量 ==> 分组 ==> 简单插入排序 ==> 缩小增量...... 代码实现

2022-07-12 22:30:46 201

原创 Java与数据结构——排序算法(一)

排序:排序也称排序算法,是将一组数据,按指定的顺序进行排序的过程。排序的分类:1)内部排序:指将需要处理的所有数据加载到内部存储器中进行排序; 2)外部排序:由于数据量过大,无法全部加载到内存中,需借助外部存储进行排序。常见的排序算法有如下:冒泡排序基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡一样逐渐上冒。优化思想:因为在排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行交换,就说明序列有序。

2022-07-08 22:35:25 87

原创 算法的时间复杂度

度量一个程序(算法)执行时间的两种方法1)事后统计法:这种统计方法是可行的,但存在两个问题,一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,这种方式要在同一台计算机的相同状态下运行,才能比较哪个算法速度快;2)事前估计法:通过分析某个算法的时间复杂度来判断哪个算法更优。时间频度时间频度:一个算法花费的时间与算法中语句的执行次数成正比列,哪个算法中语句执行次数越多,它花费的时间就越多。一个算法中的语句执行次数成为语句频度或时间频度,记为 T(

2022-07-06 20:04:45 750

原创 Java与数据结构——递归

递归:方法自己调用自己,每次调用时传入不同的变量,递归思想有助于解决复杂问题,同时让代码变得简洁。 递归需要遵守的规则:1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间);2)方法的局部变量是独立的,不会相互影响;如果方法中使用的是引用类型的变量(数组、字符串),就会共享该引用类型数据;3)递归必须向退出递归地条件逼近,否则就是无限递归,出现Stack Overflow Error;4)当一个方法执行完毕,或者遇到return,就会返回。遵守谁调用,就将结果返回给谁,同时当该方法执行完毕或者返

2022-07-06 16:22:11 292

原创 Java与数据结构——栈(前缀、中缀、后缀表达式)

前缀表达式(波兰表达式):从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式的最左端,最后运算得出的值即为表达式的结果。例如:(3+4)X 5-6对应的前缀表达式就是- X + 3 4 5 6 ,针对前缀表达式的求值步骤如下:1)从右至左扫描,将6、5、4、3压入堆栈;2)遇到 “+” 运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),计算3+4的值7,将7入栈;3)遇到 “X” 运算符,

2022-06-22 23:40:26 345

原创 Java与数据结构——栈(中缀表达式)

栈:是一个先入后出的有序链表,是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。特点:根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶;而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。 数组模拟栈:链表模拟栈:利用栈计算表达式(中缀表达式):1.通过一个索引值 index 来遍历表达式;2.如果扫描值是数字,则直接入数栈;3.如果扫描值是符号,则分情况讨论:

2022-06-22 16:52:57 334 1

原创 Java与数据结构——单向环形链表(约瑟夫问题)

循环链表:将单链表中终端结点的指针端由空指针改为头结点,就使整个单链表形成了一个环,这种头尾相接的单链表称为循环链表。约瑟夫问题:设编号为1,2,3,......,n的n个人围坐一圈,约定编号为k(1...

2022-06-21 13:12:14 182

原创 Java与数据结构——双向链表

双向链表遍历、添加、修改、删除的操作思路1)遍历:和单链表一样,只是可以向前,也可以向后查找;2)添加(默认添加到双向链表的最后)1.先找到双向链表的最后这个节点 last;2.last.next = newHeroNode;3.newHeroNode.pre = last;3)修改:和单链表思路一样4)删除1.因为是双向链表,因此,可以实现自我删除节点;2.直接找到待删除节点temp;3.temp.pre.next = temp.next;4.temp.next.pre = temp.pre;双向链表的遍

2022-06-21 10:02:45 104

原创 Java与数据结构-单链表的应用

1.求单链表中有效节点的个数public static int getLength(HeroNode head){ HeroNode temp = head.next;//不统计头结点 int count = 0; while (temp != null){ count++; temp = temp.next; } return count; }2.新浪面试题

2022-05-31 21:17:06 115

原创 Java与数据结构-单链表

链表:是有序的列表,在内存中的存储是不一定是连续的。1)链表是以节点的方式来存储,链式存储;2)每个节点包含 data 域和 next 域:用于指向下一个节点;3)链表的各个节点不一定是连续存储;4)链表分带头结点的链表和没有头结点的链表,可以根据实际需求进行设计。单链表的创建:1)先创建一个 head 头结点,作用就是表示单链表的头;2)后面每添加一个节点,就加入到链表的最后。单链表的遍历:通过一个辅助遍历,帮助遍历整个链表。...

2022-05-19 21:05:56 206

原创 Java与数据结构-队列

队列:队列是一个有序列表,可以用数组或是链表来实现。原则:队列遵循先入先出的原则,即先存入队列的数据要先取出,后存入的数据后取出。数组模拟队列:队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下,其中maxSize是该队列的最大容量。又因为队列的输入、输出是分别从前后端来处理的,因此还需要两个变量front和rear分别记录队列前后端的下标。其中,front会随着数据输出而改变,而rear随着数组的输入而改变。数组模拟队列思路分析:入队列——add...

2022-05-18 21:51:19 224

原创 Java与数据结构-稀疏数组

Java-稀疏数组

2022-05-17 22:37:23 143

原创 面向对象编程-上

一、java类及类的成员属性、方法、构造器;代码块、内部类二、面向对象的三大特征封装性、继承性、多态性;(抽象性)三、其他关键字this、super、static、final、abstract、interface、package、import1.1 类和对象类:是对一类事物的描述,是抽象的、概念上的定义;对象:是实际存在的该类事物的每个个体,也称为实例。面向对象的程序设计重点就是类的设计,设计类就是设计类的成员。1.2 类的成员常见的类的成员有:属性,方法。

2022-04-25 14:56:13 39

原创 Set集合-Java

Set集合特点:(1)不包含重复元素的集合;(2)没有带索引的方法,所以不能使用普通for循环遍历。package Set_practice;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class Set_1 { public static void main(String[] args) { Set<String> set = ne

2021-10-29 16:40:40 119

原创 List集合-Java

ListList集合概述(1)有序集合(也称为序列),用户可以精确地控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素;(2)与Set集合不同,列表通常允许重复的元素。List集合的特点有序:存储和取出的元素顺序一致;可重复:存储的元素可以重复package List_practice;import java.util.ArrayList;import java.util.Iterator;import java.util.List;pu

2021-10-21 17:26:18 142

原创 Collection集合-Java

Collection(1)是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素;(2)JDK不提供此接口的任何直接实现,它提供更具体的子接口(List和Set)实现;创建Collectionde集合的对象(1)多态的方式;(2)具体的实现类ArrayListpublic class Collection_1 { public static void main(String[] args) { Collection<String..

2021-10-19 16:26:35 122

原创 Java-内部类

内部类:就是在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类。格式:publicclass类名{ 修饰符class类名{}}内部类的访问特点:内部类可以直接访问外部类的成员,包括私有;外部类要访问内部类的成员,必须创建对象。按照内部类在类中定义的位置不同,可以分为如下两种形式:在类的成员位置:成员内部类在类的局部位置(方法内):局部内部类成员内部类:外界如何创建成员内部类对象并使用呢?格...

2021-10-08 15:14:37 76

原创 Java-形参和返回值

类名作为形参和返回值:方法的形参是类名,其实需要的是该类的对象;方法的返回值是类名,其实返回的是该类的对象。抽象类名作为形参和返回值:方法的形参是抽象类名,其实需要的是该抽象类的子类对象;方法的返回值是抽象类名,其实返回的是该抽象类的子类对象。接口名作为形参和返回值:方法的形参是接口名,其实需要的是该接口的实现类对象;方法的返回值是接口名,其实返回的是该接口的实现类对象。...

2021-10-07 21:26:47 52

原创 Java-接口

接口:就是一种公共的规范标准,只要符合规范标准,大家都可以使用。Java的接口更多的体现在对行为的抽象。接口的特点:(1)接口用关键字interface修饰publicinterface接口名{}(2)类实现接口用implements表示publicclass类名implements接口名{}(3)接口不能实例化,接口只能参照多态的方式,通过实现类对象实例化,这叫接口多态。多态的形式:具体类多态,抽象类多态,接口多态。多态的前提:有继承或实现关系;有方法重...

2021-10-07 16:59:40 39

原创 Java-抽象类

抽象类:在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。抽象类的特点:(1)抽象类和抽象方法必须使用abstract关键字修饰;publicabstractclass类名{}publicabstractvoideat ();(2)抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类;(3)抽象类不能实例化,只能参照多态的方式,通过子类对象实例化,这叫做抽象类多态;(4)抽象类的子类要么重写抽象类中所有的抽象方法,要么...

2021-10-06 14:19:51 47

原创 Java-多态

多态:同一个对象,在不同时刻表现出来的不同形态。例如:我们可以说波斯猫是猫,我们也可以说波斯猫是动物,这里的波斯猫就在不同时刻表现出了不同的形态,这就叫做多态。多态的前提和体现:(1)有继承/实现关系;(2)有方法重写;(3)有父类引用指向子类对象多态中成员访问的特点:成员变量:编译看左边,执行看右边成员方法:编译看左边,执行看右边访问成员变量和成员方法为什么不同:因为成员方法有重写,而成员变量没有重写。多态的好处:提高了程序的扩展性具体体现:定义方法的时候,使用

2021-10-06 13:29:42 38

原创 权限修饰符与状态修饰符

权限修饰符 同一个类中 同一个包中子类无关类 不同包的子类 不同包的无关类 private √ 默认 √ √ protected √ √ √ public √ √ √ √ 状态修饰符final:关键字是最终的意思,可以修饰成员方法、成员变量、类。final修饰的特点:修饰方法:表明该方法是最终方法,不能被重写修饰变量:表明该变量是常量

2021-09-29 22:06:14 86

原创 继承extends

继承:是面向对象的三大特征之一,可以使子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。格式:public class子类名 extends父类名{ }父类:又称为基类、超类,子类:又称为派生类继承中子类的特点:子类可以有父类的内容,子类也可以有自己特有的内容;继承的好处:(1)提高了代码的复用性(多个类相同的成员可以放到同一个类中);(2)提高了代码的维护性(方法的需要修改时,只需要修改父类中的一处即可);继承的弊端:削弱了子类的独立性当两个类A和B...

2021-09-29 19:44:36 80

原创 集合ArrayList

集合类的特点:提供一种储存空间可变的储存模型,存储的数据容量可以发生改变。ArrayList<E>,E是一种特殊的数据类型,出现E的地方我们使用数据类型替换即可。例如:ArrayList<String>,ArrayList<Student>创建ArrayList对象:ArrayList<String> array = new ArrayList<>();集合末尾添加元素:array.add("sjl");集合指定位置添加

2021-09-25 19:10:59 67

原创 String

String类在java.lang包下,所以在使用时不需要导包;String类代表的是字符串,java程序中的所有字符串文字(例如:“abc”,“你好!”)都被实现为此类的实例。也就是,java程序中所有的双引号字符串,都是String类的对象。String类的特点:字符串不可变,它们的值在创建后不能被更改;字符串的值不可改变,但可共享;字符串效果上相当于字符数组(char[ ]),但是底层原理是字节数组(byte[ ])。String构造方法:public String() 创建一个..

2021-09-23 16:48:59 1173

原创 成员变量与局部变量 private+this

成员变量:类中方法外的变量,存在于堆内存中,随对象的存在而存在,随对象的消失而消失,有默认的初始化值。局部变量:方法中的变量,存在于栈内存中,随着方法的调用而存在,随着方法的调用完毕而消失,没有默认的初始化值,必须先定义赋值后才能使用。private关键字:是一个权限修饰符,可以修饰成员,作用是保护成员不被别的类使用,被private修饰的成员只有在本类中才能访问。针对private修饰的成员变量,如果需要被其他类使用,则应该在该类中提供相应的方法以便操作。例如:提供“get变量名()”方法

2021-09-22 15:59:19 240

原创 类和对象-Java

对象:客观存在的皆为对象,例如小米8,iPhone13,......类:对现实生活中一类具有共同属性和行为的事物的抽象,例如:手机,电脑,汽车,......类是对象的数据类型,是具有相同属性和行为的一组对象的集合。对象的属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值,例如iPhone13采用A15仿生芯片,屏幕6.1英寸,电池3000mAh,售价5999元,......对象的行为:对象能够执行的操作,例如:iPhone13可以打电话,发短信,电影级别摄像,......注意:类是对

2021-09-22 15:21:35 57

空空如也

空空如也

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

TA关注的人

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