- 博客(36)
- 收藏
- 关注
原创 快速排序
快速排序 快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分所有数据要小,然后按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 排序原理: 在数组中选一个基准数(通常为数组第一个); 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边; 对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。 需求: 排序前:{6,1,2,
2021-01-31 18:05:11
190
原创 归并排序
归并排序 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治的思想。将已有序的子序列合并,得到完全有序的序列,既先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,成为二路归并 需求: 排序前:{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
199
原创 希尔排序
希尔排序 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
382
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
143
原创 冒泡排序
冒泡排序 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
125
原创 算法空间复杂度分析
算法空间复杂度分析 1、Java中的常见内存占用 a、基本数据类型内存占用 数据类型 占用字节 int 4 short 2 long 8 byte 1 float 4 double 8 boolean 1 char 2 2、计算机访问内存的方式是一次一个字节 3、一个引用类型(机器地址)需要8个字节 4、创建一个对象,比如new Date(),除了对象内部存储的数据(例如年月日等信息)占用的内存,该对象也占用内存,每个对象的自身内存占用是16个字节,用来保存对
2021-01-20 21:30:35
490
原创 算法时间复杂度分析
算法时间复杂度分析 大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
468
原创 数据结构和算法概述
数据结构和算法概述 1、数据结构 1)、概念: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科 2)、分类: 传统上数据结构分为逻辑结构和物理结构两大类。 1、逻辑结构 分类: a、集合结构:集合结构中数据元素除了属于同一个集合外,他们之间没有任何其他关系。 b、线性结构:树形结构中的数据元素之间存在一对一的关系。 c、树形结构:树形结构中的数据元素之间存在着一对多的层次关系。 d、图形结构:图形结构的数据元素是多对多的关系。 2、物理结构 分类: a
2021-01-20 21:29:30
113
原创 List
List List类集合接口的特点: 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
466
2
原创 Collection常用功能
Collection通用功能  Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可以用于操作所有的单列集合。 1**、public boolean add(E e) 把给定的对象添加到集合中。** boolean isAdd = 集合名称.add(e); //添加基本都会成功
2020-12-14 00:06:44
1110
原创 Iterator迭代器的使用
Iterator迭代器的使用 1、 Iterator接口 遍历Collection集合,那么就要获取该集合的迭代器完成迭代操作。 ● public Iteratot iterator() 获取集合对应的迭代器,用来遍历集合中的元素。 ● 迭代:既Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续判断,如果有就继续再取出来,一直到把集合中的所有元素全部取出。这种取出方式专业术语成为迭代。 注意: 在使用迭代取出集合元素时,【原集合没有发生改变】
2020-12-14 00:06:13
284
原创 泛型
泛型 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
257
1
原创 成员内部类
成员内部类 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类 内部类分类 1、成员内部类 2、局部内部类(包括匿名内部类) 成员内部类的定义格式: 修饰符 class 外部类名称{ 修饰符 class 内部类名称{ } } 注意:外部类调用内部类,必须通过内部类的对象来进行调用 内部类调用外部类,可以随意调用 成员内部类方法的使用 1、间接使用:在外部类的方法中,使用内部类,然后在main中调用外部类的方法来实现内部类的调用
2020-11-29 17:40:12
609
原创 权限修饰符
权限修饰符 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
117
原创 对象的上下转型
对象的上下转型 向上转型 向上转型其实就是多态写法,父类引用指向子类对象。 **格式:**父类名称 对象名 = new 子类名称(); 父类接口 对象名 = new 子类接口名称(); 注意事项:**向上转型一定是安全的。**从小范围到大范围。 Demo: Animals animals = new Cat(); //创建了一只猫,将猫当做动物看,正确 类似于: double num = 100; //正确, int --> double ,自动类型转换。 向下转型 对象的向下转型,其实
2020-11-29 17:35:16
214
原创 接口
接口 接口的基本概念: 接口就是多个类的公共规范。 接口是一种引用数据类型,最重要的内容就是其中的:抽象方法 如何定义一个接口的格式: public interface 接口名称{ //接口内容 } 备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java 如果是java 7,那么接口中可以包含的内容有: 1、常量 2、抽象方法 如果是java 8, 还可以包含的内容有: 3、默认方法 4、静态方法 如果**java 9,**还可以额外包含有: 5、私有方法 在任何版本的java
2020-11-29 17:34:42
170
原创 抽象
抽象 抽象方法:就是加上abstract关键字,然后去掉大括号,直至分号结束,必须存在于抽象类当中。 抽象类:抽象方法所在的类,在class之前写上abstract即可。 Demo: public abstract class Animals{ //抽象方法 public abstract void method(); //抽象类,在抽象类中仍可定义一般方法 public void ff(){ System.out.println("这是一个一般方法!");
2020-11-29 17:33:54
136
原创 继承
继承 继承关系中的特点: 1、子类可以拥有父类的内容。 2、子类还可以拥有自己的专有内容。 继承解决的问题:共性抽取 在继承的关系中,“子类就是一个父类”,也就是说,子类可以被当做其他类的父类来看待 继承的格式(一个普通类的定义): 父类A public class A{ } 子类B继承A public class B extends A{ } 继承中成员变量的访问特点 1、直接通过子类对象访问成员变量: 在new 对象时等号左边时谁,就优先用谁,没有则向上找。 Demo: 父类:
2020-11-29 17:33:00
167
原创 java继承的三个特点
java继承的特点 java是单继承语言(不能同时继承多个父类),但是可以多级继承 Demo class A{ } class B{ } class C extends A,B{ } 错误写法不能同时继承多个父类 class A{ } class B extends A{ } class C extends B{ } 正确,可以多级继承但是不能同时多个继承 一个类的直接父类只能有一个,一个子类的的直接父类是唯一的,但是一个父类可以拥有很多个子类
2020-11-29 17:32:27
407
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
247
原创 Arrays的使用
Arrays的使用 java.util.Arrays是一与数组相关的工具类,里面提供了大量的静态方法,用来实现数组的常见操作 注意:使用时需要导包、import java.util.Arrays 1、将参数数组变成字符串 public static String toString(参数数组) 注意:转化成的字符串按照默认格式输出[元素1, 元素2, ······] Demo1: import java.util.Arrays; public static void main(String[] args)
2020-11-22 15:45:50
146
原创 ArrayList
ArrayList 数组的长度一旦规定了就不能再改变,而ArrayList集合的长度是可以改变的 1、ArrayList的基本使用格式: 在使用之前必须导包(只有java.lang的包不用导) 导包格式: import java.util.ArrayList; 在声明一个集合时,格式为 ArrayList<泛型> Arrayname = new ArrayList<>(); 泛型:指装在集合里面的元素全部都是统一的类型,String也算是一种泛型,对象也算是一个引用类型 注意
2020-11-22 15:45:21
775
原创 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
172
原创 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
242
原创 数组
数组 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
107
原创 方法
方法 1、方法的概述: 方法就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成了一个单独的功能。当我们需要使用这个功能的时候,就可以调用。这样既实现了代码的复用性,也解决了代码冗余的现象。 2、方法的定义: ·定义格式 [修饰符1 修饰符2... ] 返回值类型 方法名(形式参数列表){ 方法体(语句块); } 3、方法的调用方式: 方法名(实参列表); Demo: method(a, b); 1、形式参数: 在方法声明时用于接受外界传入的数据。 public static int meth
2020-11-14 18:59:24
238
原创 运算符
运算符 运算符分类: 算术运算符 二元运算符 +,-,*,/, % 一元运算符 ++, – 赋值运算符 = 扩展运算符 +=, -=, *=, /= 关系运算符 >,<,>=,<=,==,!=, 逻辑运算符 &&, ||, !, ^ 位运算符 &,|,^,~,>>,<<,>>> 条件运算符 ?: 字符串连接符 + 运算符的优先级 优先级 运算符 类
2020-11-08 20:03:05
114
原创 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
834
原创 字符型变量常量
字符型变量/常量 字符型在内存中占2个字节,在java中使用单引号来表示字符型常量。例如‘A’是一个字符,他与“A”是不同的,“A”表示含有一个字符的字符串。 字符型Demo char ch1 = 'a'; char ch2 = '我'; 字符型的十六进制表示方法 char c = '\u0061'; java语言中还允许使用转义字符‘\’来将其后的字符转变为其他的含义。 转义字符 转义符 含义 \b 退格 \n 换行 \r 回车 \t 制表符(tab)
2020-11-08 20:01:41
501
原创 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
260
原创 整形变量和整形常量
整形变量和整形常量 整形用于表示没有小数部分的数值,它允许是负数。 类型 占用内存空间 表示范围 byte 1字节 -2^7 ~ 2^7 -1 short 2字节 -2^15 ~ 2^15 -1 int 4字节 -2^31 ~ 2^31 -1 long 8字节 -2^63 ~ 2^63 -1 java语言整形常量的四种表示形式 1、十进制整数 2、八进制整数 要求以 0 开头 如 015 3、十六进制整数 要求以0x或0X开头,如:0x15 4、二进制整数 要求0b
2020-11-08 20:00:05
406
原创 基本数据类型
基本数据类型 Java中定义了3类8种基本数据类型 1、数值型 byte short int long float double 2、字符型 (文本型) char 3、布尔型 boolean String 常用类型 非基本数据类型 数据类型 类型说明符 位数 整形 int 32 短整形 short 16 长整形 long 64 字节型 byte 8 单精度浮点型 float 32 双精度浮点型 double 64 布尔类型 boolean 8 字符类
2020-11-08 19:59:03
169
原创 常量和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
183
原创 变量
变量 变量的本质 变量的本质就是代表一个“可操作的存储空间”,空间位置是确定的,但里面存放的值不确定。我们可以通过变量名来访问“对应的存储空间”,从而操作“存储空间”存储的值。 变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明,只有声明变量右后才能为其分配相应长度的存储空间 变量的声明 格式为: type varName; //数据类型 变量名 (= 初始值) 示例: double nums, num;//一行可声明多个同类型变量 int nums = 1; l
2020-11-08 19:57:51
113
原创 标识符
标识符 标识符是用来给变量、类、方法以及包进行命名的,如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
281
原创 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
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅