自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序子序列

牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.遍历数组,拿到数组的元素a[i]后,与它的左右邻进行比较,符合非递增非递减序列,就将排序子序列的计数+1。如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2。输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)

2022-12-14 21:15:54 197 1

原创 组队竞赛(java)

题目描述牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平

2022-12-13 10:49:27 178

原创 七大排序----SevenSort(快速排序)

先在无序数组中选取一个分区点(数组中的一个元素),扫描整个集合将比当前分区点小的放在分区点数值的左侧,比分区点大的元素放在分区点数值的右侧,直接将分区点数值放在正确位置=》分区点数值就放在了正确的位置=》重复上述过程,继续在左半区间和右半区间进行快速排序。但是当数组近乎有序时快速排序可能会时间复杂度可能会变成O(n^2)快速排序的核心在于分区函数的实现:针对分区函数的实现,有N种操作。20世纪最伟大的算法之一------------快速排序。第二种方法(基于第一种方法的优化)

2022-12-08 20:34:00 109

原创 七大排序----SevenSort(归并排序)

不管三七二十一,我先把数组一分为二,直到每个数组只剩下一个元素,拆分阶段结束(此时每个子数组都是有序数组)不断将相邻的两个有序子数组,合并成为一个大的有序数组,直到合并成为完整的数组,此时整个数组有序!归并排序将排序的数组分为如下两个阶段。关于归并排序的时间复杂度和空间复杂度。时间复杂度是O(nlogn)归并排序的merge函数。归并排序的的核心在于。

2022-12-08 18:17:15 96

原创 七大排序----SevenSort(直接选择排序)

基于选择的思想:每次从无序区间中选择最小值或者最大值,放在元素的最开始或者最后面知道这个数组有序无须区间[ i , n)有序区间[ ]最开始,有序区间为空,无须区间就是整个数组,每走一次遍历就找到一个最大或者最小值就有一个元素放到正确位置,有序区间的个数+1无序区间-1当走了n-1次时无序区间只剩最后一个元素,此时整个数组已经有序

2022-12-07 16:12:31 98

原创 七大排序----SevenSort(希尔排序)

希尔排序就是针对直接插入排序的优化插入排序在近乎有序的数组上性能·非常好或者在小数据规模的集合中性能也很好于是先将数组调整得近乎有序,然后使用插入排序--------希尔排序的核心思想!!!具体操作先选定一个整数(gap)分组(所有距离为gap的元素在同一组),对同一组元素进行排序。不断缩小这个gap的长度(gap/=2,gap/=3)重复上述分组与排序过程,当gap==1时,其实整个数组已经近乎有序了,最后再来一次全组的插入排序整个集合就变得有序了。注意:(gap/=2,gap/=3):是经过论证得

2022-12-07 16:01:44 167

原创 七大排序----SevenSort(插入排序)

基于插入的思想:打扑克牌

2022-12-07 15:38:47 78

原创 Eclipse中的快捷键

Eclipse中的快捷键

2022-12-06 16:45:04 85

原创 七大排序----SevenSort(堆排序)

堆排序问题

2022-12-03 21:35:03 304

原创 最大堆的实现

最大堆的实现

2022-12-03 21:26:51 74

原创 二叉树的基础实现

【代码】二叉树的基础实现。

2022-11-29 22:34:45 144

原创 Object和final

JDK三大特殊类:Object,String,包装类Object类是Java所有类默认的父类,万物之母,不需要使用extend关键字明确写出继承Object只要使用class关键字声明的类,默认都有一个父类,就是Object1 由于Object的类是所有类的父类,因此Object是参数的最高统一化!!!!!所有类的对象,都可以通过Object引用进行接收2 由于Object类是所有类的父类,则Object类中的所有方法,子类中都有,而且我们可以选择性的覆写其中的方法。

2022-11-26 21:47:16 126

原创 面试---必刷题

吊打面试

2022-11-24 22:37:46 134

原创 图解——动态数组

就是可以以非常低的成本来更换具体的子类逻辑删除,物理上没删,但是我们取不到,这种删除称为逻辑上删除。

2022-11-23 20:22:32 132

原创 异常的概念与体系结构

Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构例如, 我们实现一个用户登陆功能.if(!} if(!} System . out . println("登陆成功");} }此时我们在处理用户名密码错误的时候可能就需要抛出两种异常. 我们可以基于已有的异常类进行扩展(继承), 创建和我们业务相关的异常类.自定义异常类,然后继承自Exception 或者 RunTimeException。

2022-11-22 17:52:14 128

原创 字符串常量池

intern 是一个native方法(Native方法指:底层使用C++实现的,看不到其实现的源代码),该方法的作用是手动将创建的String对象添加到常量池中。在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、创建对象时,现在字符串常量池中找,找到了,直接将该字符引用赋给s1。上述程序创建方式类似,为什么s1和s2引用的是同一个对象,而s3和s4不是呢?更节省内存,Java为8种基本数据类型和String类都提供了常量池。

2022-11-22 16:08:39 63

原创 String详解

StringBuilder和String是两个独立的类,字符串常量池保存的都是String对象 int和double的关系StringBuilder对象内部都可以修改的。统一使用String.valueOf(任意类型),当传入的是自定义的类时,会默认调用toString进行转换,要求我们在自定义的类型中覆写toString方法~若在某些场景下需要频繁修改字符的内容,JDk提供了两个新的类,专门用来处理字符串内容修改的。b.若前k个字符完全相等(k是两个字符串中的最小值),返回值为两个字符串的长度差!

2022-11-22 16:08:22 270

原创 接口的定义和使用

因为接口中只有全局变量和抽象方法,因此,在接口中一下关键字可以省略不写,阿里编码规约明确表示,接口中只保留核心关键字,可以省略的坚决不写!子类使用implements实现接口,子类若是普通类,必须覆写接口中所有的抽象方法(一般磊说,子类使用Imp结尾,表示是接口的实现子类,若子类一眼看去就知道是某个接口的子类,可以不加Impl结尾l)浅拷贝:被克隆的对象内部若包含其它类型的引用,则克隆后的对象,仍然保留原引用,不会产生新对象(浅拷贝只会将原对象内部的所有值复制一份引用就只会复制引用的值,即。

2022-11-21 09:23:58 341

原创 Object详解

关于Object除了Object是默认所有类的父类外,JDk赋予了Object可以接收所有引用数据类型的权利Object还可以接收数组和接口对象!由于的存在,大家一定要记住千万别被前面的给迷惑了,我们的是在哪!!!!Object类的默认equals方法对于引用数据类型来说”==“是比较引用类型保存的地址值是否相等,若要进行对象内部属性值比较是否相等使用equals方法!!(Object类提供的方法)

2022-11-20 08:00:00 285

原创 泛型类的使用

一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。泛型不仅可以定义类,还可以定义方法权限修饰符方法返回值类型 方法名称(参数类型 形参名称){}System . out . println("泛型方法");}注意泛型方法以。

2022-11-19 15:23:59 254

原创 面试必看(常考面试题)

①"==“进行的是两个变量数值的比较,对于基本类型来说,比较的就是具体的数值是否相等;2.” equals"方法进行的是两个类对象的属性值比较,若类的对象要具体比较属性值是否相等,一要猾写Obiect类提供的eauals方法。会开辟两块堆内存空间,字符串"hello"保存在字符串常量池中,然后用常量池中的String对象给新开辟的String对象赋值。StringBulider采用异步处理,线程不安全,效率较高,一般不要求线程安全的场景下,推荐使用StringBulider。如果有先答共性再分别回答区别!

2022-11-18 10:50:19 64

原创 抽象类的方法与使用

eg:在Java中,native放法也是没有方法体的,这种方法不是抽象方法本地方法是由C++实现的方法,Java只负责调用,方法体实现是C++代码。定义抽象类,抽象类是普通类的超集!只是比普通类多了一些抽象方法而已,普通类具有的内容,抽象类都有。描绘一个对象,只是作为具体对象的父类,这种类就可以定义抽象类!,但是,这并不是说没有方法体就是抽象方法,要先看是否有。的世界中,一切都可以通过类来使用,万事万物皆对象·使用anstract定义抽象方法,的概念 ,没办法对应到具体的实体。JVM本身就是C++实现的。

2022-11-17 20:16:07 338

原创 面向对象---继承

任意的一个动物,现在要程序扩展一个鸭子Duck,青蛙Frog等等这些类和Dog’与Cat有很多相似之处=》不同的动物类,具有很多属性和行为,这些属性或方法分散在具体的类中,就会有很多反码的冗余,拓展一个类也比较麻烦相似的的代码否要重写一遍。当访问的变量的时候优先从子类寻找,若子类不存在才会从父类循环找同名属性,如父类中也没找到同名属性,编译就会报错。3.2 若子类不存在该方法,则会从父类中寻找是否存在该方法,存在则调用,不存在则报错,一定注意隐式继承的问题。继承:代码的复用,增加整个程序的扩展性。

2022-11-16 21:25:01 99

原创 面向对象---多态

私有方法,静态方法,构造方法都不存在方法重写!!静态绑定-方法重载:编译时,编译器根据用户传参的不同决定到底调用的那个方法动态绑定-方法的重写:编译时无法确定到底调用的是那个对象的方法,只有在运行时,根据传入的方法的对象,才能知道到底调用的是那个对象的方法,这就叫动态绑定,即运行时才明确调用的哪个方法。

2022-11-16 14:00:00 96

原创 面向对象---封装

对外屏蔽类内部一些实现细节,类的外部只能通过列提供的方法来操作类封装:将数据和操作数据的方法相结合,隐藏对象的属性和细节,对外部提供公开的方法进行交互简单来说就是文件夹。

2022-11-14 23:23:02 74

原创 时间复杂度和空间复杂度

空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。因为计算机的硬件不同,相同的算法在不同的CPU,内存这些硬件上执行的时间都会有差异,有时候差异还会很大。:主要衡量一个算法的运行速度(不是实际计算机的运行速度,是理论值使用在所有计算机的通用描述)通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。利用数学函数,描述一个算法的基本操作所执行的次数,就是我们讨论的时间复杂度。2、在修改后的运行次数函数中,

2022-11-13 09:30:28 96

原创 Static关键字

Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。Static关键字static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。注意:静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性。使用static定义的代码块称为静态代码块。静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化。static 表示静态与类相关,和具体的对象无关!看见static关键字 与对象无关!

2022-11-12 19:57:57 53

原创 this关键字

必须等待其他构造方法调用结束后在执行其他属性的构造,有先后关系,你依赖别的构造方法先执行结束在调用当前的初始化逻辑。编译器的就近原则,程序调用一个变量或方法时编译器查找属性或方法有优先级,在哪找到直接调用。使用this.属性方法—>直接从类中寻找同名变量!在当前构造方法中调用其他构造方法必须卸载构造方法的首行。语法:this.(参数);//表示调用构造方法。只有构造方法中才能调用构造方法。this的构造方法不能成环。this调用构造方法。

2022-11-11 13:48:20 65

原创 static和this关键字区别

3.this可以表示当前对象的引用,当前是通过那个对象调用方法或属性,this就指代谁。this.方法名称**(参数)**;this构造方法调用必须写在构造方法的首行,且不能成环。,与对象无关,和类本身相关,该类的所有对象共享此属性。1.this修饰属性表示直接从类中寻找同名变量。在成员中能否通过this静态方法或者静态属性?在静态方法中能否调用成员方法或者成员变量?在成员方法中能否调用静态方法或者静态变量?:表示当前对象的引用,和具体的对象相关。在静态方法中能否使用this关键字?:与具体对象无关,和。

2022-11-10 17:49:11 165

原创 类的默认初始化

为什么,而成员变量可以不用呢?

2022-11-10 16:21:14 163

原创 类定义和使用

/ 创建类//属性 成员属性,对象属性//方法 成员方法,对象方法}//定义一个学生类 public String name;//姓名 public String gender;//性别 public short age;//年龄 public double score;//学分 public void DoClass() {} //上课 public void DoHomework() {} //做作业 public void Exam() {} //考试 }

2022-11-09 10:44:19 495

原创 数组的排序

设定两个下标, 分别指向第一个元素和最后一个元素. 交换两个位置的元素.双指针快速查找,比较重要的知识点,但它有个前提必须是有序数组才能使用。然后让前一个下标自增, 后一个下标自减, 循环继续即可。给定一个数组, 让数组升序 (降序) 排序.针对有序数组, 可以使用更高效的二分查找.如 1 2 3 4 , 依次递增即为升序.如果相等,即找到了返回该元素在数组中的下标。给定一个数组, 将里面的元素逆序排列.如果小于,以类似方式到数组左半侧查找。如果大于,以类似方式到数组右半侧查找。

2022-11-08 17:18:57 277

原创 数组的使用详解

所谓的 “引用” 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实只是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大).、

2022-11-08 17:07:47 112

原创 数组的定义和使用

数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过。所谓 “遍历” 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作,比如:打印。静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。在数组中可以通过 数组对象**.length** 来获取数组的长度。二维数组的用法和一维数组并没有明显差别!1动态初始化:在创建数组时,直接指定数组中元素的个数。如果没有对数组进行初始化,数组中元素有其默认值。

2022-11-08 15:57:15 66

原创 方法的递归

1.方法递归包括了一种隐式的循环,他会重复执行某段代码块,但这种重复执行无须循环控制。2.递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。什么是才能使用递归(什么场景下才使用递归这中程序结构来解决问题)3,存在递归结束条件(拆分问题是有限的,不能无限拆分下去如上所说。2,拆分后的子问题和原问题除了数据大小不同,解题思路完全相同。在计算机里递归它是走到程序的末尾才会停止“递归是学习数据结构的和算法的重中之重。求一个数的n阶乘时递归的最直接的体现。1,一个大问题可以拆成若干个小问题。

2022-11-08 15:34:01 92

原创 方法定义和重载

修饰符 返回值类型 方法名称(形参类型 形参名称…){//方法体代码(return 返回值)}public static 返回值类型 方法名称(形参类型 形参名称){返回值类型:返回值类型是啥,有没有返回值,要根据实际情况来决定//方法体[return 返回值 ];//void没有返回值,可以不写return语句返回值:返回值是返回给调用者来使用}修饰符统一先使用共同搭配。2.返回值和参数具体情况为准,如方法没有返回值,则返回值类型写成void例如。

2022-11-08 15:04:42 199

原创 JAVA基础语句

【代码】JAVA基础语句。

2022-10-20 11:29:15 73

原创 驼峰命名法

/推荐使用这种,一眼看上去就知道这个变量在存储一个年龄!若由多个单词组成,则从第二个单词开始首字母大写int age = 10;int a = 10;//此时用这个命名,表示范围很广,不具体。大驼峰:类名使用大驼峰命名法每个单词的首字母都大写。以后标识符的命名一律使用有意义的单词来命名。小驼峰:方法和变量使用小驼峰命名法。标识符若由一个单词组成则全小写。驼峰命名法:规范命名的规则。

2022-10-20 11:18:34 207

原创 数据类型转换

计算机存储数据默认采用4字节存储,所有小于四字节的数据类型(byte,short,char),隐式提升为int之后进行存储(boolean)当把整形字面量赋值给byte变量时,若在byte保存范围之内直接赋值,但是若是超出byte的保存范围,必须进行强转,有精度丢失问题。当不同数值进行运算的时候,小类型会自动转化为大类型进行运算。显示转换:强制进行转换,一般是大变小会出现精度丢失。注意:布尔类型的无法和任何类型进行转换。注意:布尔类型的无法和任何类型进行转换。注意:布尔类型的无法和任何类型进行转换。

2022-10-20 11:09:55 59

原创 JAVA字面量

数值型:bety,shot,int,long。浮点数-字面量默认为:double 类型。布尔型-字面量默认为:boolean类型。字符串-字面量默认为:String类型。字符型-字面量默认为:char类型。浮点型:float,double。整形-字面量默认为:int 类型。布尔型:boolean。首先了解八大基本类型。

2022-10-20 10:47:04 185 1

空空如也

空空如也

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

TA关注的人

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