自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速排序

快速排序快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分所有数据要小,然后按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列排序原理:在数组中选一个基准数(通常为数组第一个);将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边;对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。需求:排序前:{6,1,2,

2021-01-31 18:05:11 125

原创 归并排序

归并排序归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治的思想。将已有序的子序列合并,得到完全有序的序列,既先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,成为二路归并需求:排序前:{8,4,5,7,1,3,6,2}排序后:{1,2,3,4,5,6,7,8}排序原理:1、尽可能的一组数据拆分为两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。2、将相邻的两个子组进行合并成一个有序的大组3、不断的重复步骤2,知道最终只有

2021-01-31 18:04:35 143

原创 希尔排序

希尔排序1、排序介绍a、需求:排序前:{9,1,2,5,7,4,8,6,3,5}排序后:{1,2,3,4,5,5,6,7,8,9}b、排序原理:1、选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;2、对分好组的每一组数据完成插入排序;3、减小增长量,最小减为1,重复第2部和第三部操作。注意:增量一般选取方法:第一次的增量为:数组的长度 / 2,此后每次增量为为上一次增量的一半,直到增量缩小到1[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(im

2021-01-31 18:03:53 292 1

原创 插入排序

插入排序插入排序是一种简单直观且稳定的排序算法。插入排序概述:需求:​ 排序前:{4,3,2,10,12,1,5,6}​ 排序后:{1,2,3,4,5,6,10,12}排序原理:1、把所有元素分为两组,已经排序的和未知排序的;2、找到未排序的组中的第一个元素,向已经排序的组中进行插入3、倒叙遍历已经排序的元素,依次和带插入的元素进行比较,直到找到一个元素小于等于带插入元素,那么就把待插入元素放到这个位置,其他的元素后移一位;图解:[外链图片转存失败,源站可能有防盗链机制,建议将图片

2021-01-23 15:53:06 102

原创 冒泡排序

冒泡排序1、冒泡排序基本算法实现a、主要思想[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u9iXBfXW-1611149444912)(C:\Users\29455\AppData\Roaming\Typora\typora-user-images\1611147477647.png)]b、代码实现public static void main(String[] args) { int[] a = {1,5,9,8,7,4}; fo

2021-01-20 21:31:11 87

原创 算法空间复杂度分析

算法空间复杂度分析1、Java中的常见内存占用a、基本数据类型内存占用数据类型占用字节int4short2long8byte1float4double8boolean1char22、计算机访问内存的方式是一次一个字节3、一个引用类型(机器地址)需要8个字节4、创建一个对象,比如new Date(),除了对象内部存储的数据(例如年月日等信息)占用的内存,该对象也占用内存,每个对象的自身内存占用是16个字节,用来保存对

2021-01-20 21:30:35 406

原创 算法时间复杂度分析

算法时间复杂度分析大O记法定义:​ 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随着n的变化情况并确定T(n)的量级。算法的时间复杂度,就是算法时间的量度,记做:T(n) = O(f(n))。它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。用大写O()来体现算法时间复杂度的记法,我们称之为大O记法。一般情况下,随着输入规模n的增大,T(n)增长最慢的算法为最

2021-01-20 21:30:00 378

原创 数据结构和算法概述

数据结构和算法概述1、数据结构1)、概念:​ 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科2)、分类:传统上数据结构分为逻辑结构和物理结构两大类。1、逻辑结构分类:a、集合结构:集合结构中数据元素除了属于同一个集合外,他们之间没有任何其他关系。b、线性结构:树形结构中的数据元素之间存在一对一的关系。c、树形结构:树形结构中的数据元素之间存在着一对多的层次关系。d、图形结构:图形结构的数据元素是多对多的关系。2、物理结构分类:a

2021-01-20 21:29:30 63

原创 List

ListList类集合接口的特点:1、有序的集合,存储元素和取出元素的顺序是一致的2、有索引,可以根据索引对元素进行操作3、允许存储重复的元素一、List集合中常用带索引的方法1、public void add(int index, E e) 向集合中指定索引位置添加指定元素public static void main(String[] args) { //创建一个List集合 使用多态的写法 List<String> list = new A

2020-12-24 09:38:40 381 2

原创 Collection常用功能

Collection通用功能![F~KB3UT[I7Z(9K04(B0XW1](C:\Users\29455\Desktop\F~KB3UT[I7Z(9K04(B0XW1.png)Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可以用于操作所有的单列集合。1**、public boolean add(E e) 把给定的对象添加到集合中。**boolean isAdd = 集合名称.add(e);//添加基本都会成功

2020-12-14 00:06:44 967

原创 Iterator迭代器的使用

Iterator迭代器的使用1、 Iterator接口遍历Collection集合,那么就要获取该集合的迭代器完成迭代操作。● public Iteratot iterator() 获取集合对应的迭代器,用来遍历集合中的元素。● 迭代:既Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续判断,如果有就继续再取出来,一直到把集合中的所有元素全部取出。这种取出方式专业术语成为迭代。注意:在使用迭代取出集合元素时,【原集合没有发生改变】

2020-12-14 00:06:13 231

原创 泛型

泛型1、泛型的概述泛型是一种未知的数据类型,当我们不知道使用什么数据类型时,可以使用泛型。泛型也可以看出是一个变量,用来接收数据类型E/e: Element 元素T/t: Type 类型在创建集合对象的时候,就会确定泛型的数据类型//ArrayList<E> var = new ArrayList<>();//创建了一个String类型的集合ArrayList<String> list = new ArrayList<>();在确定E的

2020-12-13 21:57:50 196 1

原创 成员内部类

成员内部类如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类内部类分类1、成员内部类2、局部内部类(包括匿名内部类)成员内部类的定义格式:修饰符 class 外部类名称{ 修饰符 class 内部类名称{ }}注意:外部类调用内部类,必须通过内部类的对象来进行调用​ 内部类调用外部类,可以随意调用成员内部类方法的使用1、间接使用:在外部类的方法中,使用内部类,然后在main中调用外部类的方法来实现内部类的调用

2020-11-29 17:40:12 540

原创 权限修饰符

权限修饰符Java中四种权限修饰符​ public > protected > (不写) > private同一个类 T T T T同一个包 T T T F不同包子类 T T F F不同包非子类 T F F F...

2020-11-29 17:39:40 76

原创 对象的上下转型

对象的上下转型向上转型向上转型其实就是多态写法,父类引用指向子类对象。**格式:**父类名称 对象名 = new 子类名称();​ 父类接口 对象名 = new 子类接口名称();注意事项:**向上转型一定是安全的。**从小范围到大范围。Demo:Animals animals = new Cat(); //创建了一只猫,将猫当做动物看,正确类似于:double num = 100; //正确, int --> double ,自动类型转换。向下转型对象的向下转型,其实

2020-11-29 17:35:16 161

原创 接口

接口接口的基本概念:接口就是多个类的公共规范。接口是一种引用数据类型,最重要的内容就是其中的:抽象方法如何定义一个接口的格式:public interface 接口名称{ //接口内容}备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java如果是java 7,那么接口中可以包含的内容有:1、常量2、抽象方法如果是java 8, 还可以包含的内容有:3、默认方法4、静态方法如果**java 9,**还可以额外包含有:5、私有方法在任何版本的java

2020-11-29 17:34:42 110

原创 抽象

抽象抽象方法:就是加上abstract关键字,然后去掉大括号,直至分号结束,必须存在于抽象类当中。抽象类:抽象方法所在的类,在class之前写上abstract即可。Demo:public abstract class Animals{ //抽象方法 public abstract void method(); //抽象类,在抽象类中仍可定义一般方法 public void ff(){ System.out.println("这是一个一般方法!");

2020-11-29 17:33:54 80

原创 继承

继承继承关系中的特点:1、子类可以拥有父类的内容。2、子类还可以拥有自己的专有内容。继承解决的问题:共性抽取在继承的关系中,“子类就是一个父类”,也就是说,子类可以被当做其他类的父类来看待继承的格式(一个普通类的定义):父类Apublic class A{ } 子类B继承Apublic class B extends A{ }继承中成员变量的访问特点1、直接通过子类对象访问成员变量:在new 对象时等号左边时谁,就优先用谁,没有则向上找。Demo:父类:

2020-11-29 17:33:00 105

原创 java继承的三个特点

java继承的特点java是单继承语言(不能同时继承多个父类),但是可以多级继承Democlass A{ }class B{ }class C extends A,B{ }错误写法不能同时继承多个父类class A{ }class B extends A{ }class C extends B{ }正确,可以多级继承但是不能同时多个继承一个类的直接父类只能有一个,一个子类的的直接父类是唯一的,但是一个父类可以拥有很多个子类

2020-11-29 17:32:27 312 1

原创 字符串

字符串1、字符串的特点:1)、字符串的内容永不可变。【注意】2)、字符串可以共享使用。3)、字符串相当于char[] (char型数组),但底层原理是byte[] (字节数组)2、字符串的4种创建方式(一种直接创建,三种构造方法)1)、public String() 创建一个空白字符串使用格式public static void main(String[] args){ String nums = new String(); System.out.println(nums

2020-11-22 15:46:21 173

原创 Arrays的使用

Arrays的使用java.util.Arrays是一与数组相关的工具类,里面提供了大量的静态方法,用来实现数组的常见操作注意:使用时需要导包、import java.util.Arrays1、将参数数组变成字符串public static String toString(参数数组)注意:转化成的字符串按照默认格式输出[元素1, 元素2, ······]Demo1:import java.util.Arrays;public static void main(String[] args)

2020-11-22 15:45:50 105

原创 ArrayList

ArrayList数组的长度一旦规定了就不能再改变,而ArrayList集合的长度是可以改变的1、ArrayList的基本使用格式:在使用之前必须导包(只有java.lang的包不用导)导包格式:import java.util.ArrayList;在声明一个集合时,格式为ArrayList<泛型> Arrayname = new ArrayList<>(); 泛型:指装在集合里面的元素全部都是统一的类型,String也算是一种泛型,对象也算是一个引用类型注意

2020-11-22 15:45:21 641

原创 Random的使用

Random的使用Random作用:获得随机数字使用时需要导包:import java.util.Random;使用格式:import java.util.Random;public static void main(String[] args){ Random one = new Random; //创建一个Random的对象 int num = one.nextInt(); //创造相应类型的变量来接受随机生成的数字的类型 double i1 = one.

2020-11-22 15:44:45 128

原创 Scanner的使用

Scanner的使用Scanner的作用:从键盘获得输入。注意:使用时必须导包,import java.util.Scanner;1、一般格式:import java.util.Scanner;public static void main(String[] args){ Scanner tm = new Scanner(System.in); int num = tm.nextInt(); //从键盘中获取一个整形数字 String chars = tm.next();

2020-11-22 15:44:10 183

原创 数组

数组1、数组的概念:数组是一种容器,可以同时存放多个数据值。特点:1、数组是一种引用数据类型2、数组当中的多个数据,类型必须统一3、数组的长度在运行期间不能改变2、数组的初始化:初始化:在内存当中创建一个数组并且向其中赋予一些默认值。两种常见的初始化方式:1、动态初始化(指定长度)格式:数据类型[] 数组名称 = new 数据类型[数组长度];Demo: final int N = 9; int[] nums = new int[N]; //定义了一个长度为9的名称为nu

2020-11-14 19:37:28 57

原创 方法

方法1、方法的概述:方法就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成了一个单独的功能。当我们需要使用这个功能的时候,就可以调用。这样既实现了代码的复用性,也解决了代码冗余的现象。2、方法的定义:·定义格式[修饰符1 修饰符2... ] 返回值类型 方法名(形式参数列表){ 方法体(语句块);}3、方法的调用方式:方法名(实参列表);Demo:method(a, b);1、形式参数:在方法声明时用于接受外界传入的数据。public static int meth

2020-11-14 18:59:24 140

原创 运算符

运算符运算符分类:算术运算符二元运算符+,-,*,/, %一元运算符++, –赋值运算符=扩展运算符+=, -=, *=, /=关系运算符>,<,>=,<=,==,!=,逻辑运算符&&, ||, !, ^位运算符&,|,^,~,>>,<<,>>>条件运算符?:字符串连接符+运算符的优先级优先级运算符类

2020-11-08 20:03:05 73

原创 boolean类型变量常量

boolean类型变量/常量boolean类型有两个常量值,ture和false,在内存中占一位,不可以使用0或非0的整数代替true和false,boolean类型用来判断逻辑条件,一般用于程序流程控制。Demo:boolean flag = ture;if(flag){ //ture分支}else{ //false分支}...

2020-11-08 20:02:11 758

原创 字符型变量常量

字符型变量/常量字符型在内存中占2个字节,在java中使用单引号来表示字符型常量。例如‘A’是一个字符,他与“A”是不同的,“A”表示含有一个字符的字符串。字符型Demochar ch1 = 'a';char ch2 = '我';字符型的十六进制表示方法char c = '\u0061'; java语言中还允许使用转义字符‘\’来将其后的字符转变为其他的含义。转义字符转义符含义\b退格\n换行\r回车\t制表符(tab)

2020-11-08 20:01:41 392

原创 BigDecimal进行浮点数比较

BigDecimal进行浮点数比较java.math包下面有两个有用的类:Biginteger和BigDecimal,这两个类可以处理任意长度的数值,BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。Demo:(使用BigDecimal进行浮点数比较)import java.math.BigDecimal;public class Main{ public static void main(String[] args){ BigDec

2020-11-08 20:00:35 192

原创 整形变量和整形常量

整形变量和整形常量整形用于表示没有小数部分的数值,它允许是负数。类型占用内存空间表示范围byte1字节-2^7 ~ 2^7 -1short2字节-2^15 ~ 2^15 -1int4字节-2^31 ~ 2^31 -1long8字节-2^63 ~ 2^63 -1java语言整形常量的四种表示形式1、十进制整数2、八进制整数 要求以 0 开头 如 0153、十六进制整数 要求以0x或0X开头,如:0x154、二进制整数 要求0b

2020-11-08 20:00:05 345

原创 基本数据类型

基本数据类型Java中定义了3类8种基本数据类型1、数值型 byte short int long float double2、字符型 (文本型) char3、布尔型 booleanString 常用类型 非基本数据类型数据类型类型说明符位数整形int32短整形short16长整形long64字节型byte8单精度浮点型float32双精度浮点型double64布尔类型boolean8字符类

2020-11-08 19:59:03 121

原创 常量和final

常量和final常量(constant)常量通常指一个固定的值,在Java语言中,主要利用关键字final来定义一个常量。常量一旦被初始化后不能改变其值。声明格式:final type varName = value;常量的声明及使用:public class Demo1 { public static void main(String[] args) { final double PI = 3.14;//此时PI为常量不能再改变 //PI = 4 //错误 不能再次被赋值

2020-11-08 19:58:19 122

原创 变量

变量变量的本质变量的本质就是代表一个“可操作的存储空间”,空间位置是确定的,但里面存放的值不确定。我们可以通过变量名来访问“对应的存储空间”,从而操作“存储空间”存储的值。变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明,只有声明变量右后才能为其分配相应长度的存储空间变量的声明格式为:type varName;//数据类型 变量名 (= 初始值)示例:double nums, num;//一行可声明多个同类型变量int nums = 1;l

2020-11-08 19:57:51 61

原创 标识符

标识符标识符是用来给变量、类、方法以及包进行命名的,如Welcome、main、System、age等。需要遵循一定的规则:1、标识符必须以字母、下划线、美元符号$开头。2、标识符其他部分可以是字母、下划线“-”,美元符“$”和数字的任意组合。3,Java标识符的大小写敏感,且无长度限制。4、标识符不能是java的关键字。合法的标识符int a = 3;int _123 = 3;int $12aa = 3;不合法的标识符int 1a = 3;//不能使用数字开头int a# = 3

2020-11-08 19:57:18 230

原创 JAVA的注释

JAVA的注释1、单行注释:使用“//”开头,“//”后的内容都为注释Demo://操作可以是浮点数 一般是整数 System.out.println(9 % 4); // 取余时余数符号和%左边数字符号一样2、多行注释:以“/* ”开头,以“ */”结尾,介于两者之间的都是注释注意:“/ *”只识别“**/”,中间若存在多个则以第一个为注释截至。/*public class Demo2 { public static void main(String[] args) { bo

2020-11-08 19:56:43 278

空空如也

空空如也

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

TA关注的人

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