java中的Scanner
Scanner类它提供了输入数据的方法、包含在被称为“实用类”的java.util包中;在使用前需要创建一个Scanner对象;声明一个名为in的Scanner变量,并新建一个Scanner对象以便从System.in中获取输入;🌂:Scanner in = new Scanner(System.in);
12345678910111213141516package demo1;import java.util.Scanner;public class Test_1 { public static void main(String[] args) { String line; Scanner in = new Scanner(System.in); System.out.print("小黄说:"); line = in.nextLine(); System.out.println("系统检测到小黄说了:"+line); }}
在这之间我发现nextline与next都是接收S ...
Java之方法
1、方法的基本定义修饰符 返回值类型 方法名(参数列表){方法体[return 返回值]}🌂比如下面这个例子:
1234567891011121314package demo1;public class T1 { public static int max(int num1,int num2) { int result; if(num1>num2) { result = num1; }else { result = num2; } return result; }}
2、方法的使用Add:this代表本类对象哪个对象调用这个方法this就是它;比如Person p1 = new Person(); 此时this代表p1;
123456789101112131415161718192021Person.javapackage demo2;public class Person { String name; int age; void talk() { ...
AVL实现
前言:前面是Avl树的介绍写的比较详细,这一篇主要写怎么实现
最简单的旋转依次插入1 2 3节点,1的左子树为空高度为0,而右子树高度为2,旋转后,左右高度都为1
单旋转依次插入6 3 7 1 4,插入2时,树的平衡被破坏
步骤:获取k1节点=k2的左边节点设置k2的左边节点为k1的右边节点Y设置k1的右边节点为k2重新计算k2和k1的高度
123456789private AvlNode<T> rotateWithLeftChild(AvlNode<T> k2) { AvlNode k1 = k2.left; k2.left = k1.right; k1.right = k2; k2.height = Math.max(height(k2.left), height(k2.right)) + 1; k1.height = Math.max(height(k1.left), k2.height) + 1; return k1; }
双旋转依次插入6 2 7 ...
java之数组
前言:这里是复习没啥好说的,随便复习一下概念和写几个实例,一下子就懂了!
一、一维数组定义:类型[ ] 数组名 = new 类型[长度];数组中存有默认值0,而在引用类型[ ]中为null;
如果在定义前,已经知道数组里存放的内容,那可以简单定义为:类型[ ] 数组名 = {值1,值2,…,值n};类型[ ] 数组名 = new 类型[ ]{值1,值2,…,值n};
Add:动态初始化如:int[ ] array = new int[4];静态初始化如:int[] array = new int[]{1,2,3,4};但是像int[] array = new int[3]{1,2,3};就是错误的写法这样也是错的,int[ ] array;array[ ] = {1,2,3};也是错的!!!
而这样是可以的:把String names[ ] = new String[ ]{“加油”,“冲呀”};拆为:String names[ ] ;和 names[ ] = new String[ ]{“加油”, ...
java之程序控制结构
一、选择结构(了解下就好)1.1条件分支(if与if-else语句)12345678910111213141516171819那就先说说if语句,其实没啥好讲的if(条件为真)执行,否则不执行!!!记住就行,没啥太过于纠结和不懂的地方!!package demo1;public class Test { public static void main(String[] args) { int num = 1; if(num==1) { System.out.println("Right1"); } if(num==2) { System.out.println("Right2"); } }}程序运行结果为Right1
1.2 if-else语句基本部分: if(true)
{
执行这里
} else
{
执行这里(条件为假)
}
123456789public static void main(String[ ...
AVL介绍
AVL树概念 AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持。而且要保证它的深度是O(logN). AVL的条件是左右树的高度差(平衡因子)不大于1;并且它的每个子树也都是平衡二叉树。 对于平衡二叉树的最小个数,n0=0;n1=1;nk=n(k-1)+n(k-2)+1;(求法可以类比斐波那契!) 难点:AVL是一颗二叉排序树,用什么样的规则或者规律让它能够在复杂度不太高的情况下实现动态平衡呢?
不平衡概况
如果简单的以单节点看,大致有上面四种情形,并且他们的最后结果也是有的有所相近。只是:上下会变动。该在左面的还在左面,该在右面的还在右面。
这只是针对在底部,对于可能出现的平衡要首先搞清楚:
所以针对四种不平衡,可能出现在底部,也可能出现在头,也可能出现在某个中间节点导致不平衡。 而我们只需要研究其首次不平衡点,解决之后整棵树即继续平衡。当然,在实际解决肯定会带上递归的思想解决问题。
四种平衡旋转方式RR平衡旋转(左单旋转)
出现这种情况的原因是节点的右侧的右侧较深这时候不平衡节点需要左旋。再细看过程。
再左旋的过 ...
数据结构与算法之二叉排序(查找)树
前言前面介绍学习的大多是线性表相关的内容,把指针搞懂后其实也没有什么难度。规则相对是简单的。再数据结构中树、图才是数据结构标志性产物,(线性表大多都现成api可以使用),因为树的难度相比线性表大一些并且树的拓展性很强,你所知道的树、二叉树、二叉排序树,AVL树,线索二叉树、红黑树、B数、线段树等等高级数据结构。然而二叉排序树是所有的基础,所以彻底搞懂二叉排序树也是非常重要的。
树
二叉树也是树的一种,而二叉排序树又是二叉树的一种。树是递归的,将树的任何一个节点以及节点下的节点都能组合成一个新的树。并且很多操作基于递归完成。🌂根节点: 最上面的那个节点(root),根节点没有前驱节点,只有子节点(0个或多个都可以)🌂层数: 一般认为根节点是第1层(有的也说第0层)。而树的高度就是层数最高(上图层数开始为1)节点的层数🌂节点关系: 父节点:就是链接该节点的上一层节点,孩子节点:和父节点对应,上下关系。而祖先节点是父节点的父节点(或者祖先)节点。兄弟节点:拥有同一个父节点的节点们!🌂度: 节点的度就是节点拥有孩子节点的个数(是孩子不是子孙).而树的度(最大)节点的度。同时,如果度大于 ...
数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)
递归介绍递归:就是函数自己调用自己。 子问题须与原始问题为同样的事,或者更为简单;递归通常可以简单的处理子问题,但是不一定是最好的。
对于递归要分清以下概念:
🌂自己调用自己🌂递归通常不在意具体操作,只关心初始条件和上下层的变化关系。🌂递归函数需要有临界停止点,即递归不能无限制的执行下去。通常这个点为必须经过的一个数。🌂递归通常能被其他方案替代(栈、数组正向求)。
递归求阶乘🌂求 n!=n*(n-1)*—–1=n!=n(n-1)所以阶乘的上下级的关系很容易找到。我们假设一个函数jiecheng(n)为求阶乘的函数。这个阶乘,你可以这样命名:
123456789101112131415161718192021public class test{ public static void main (String[] args) { System.out.println(jiecheng(8));}/** * 求n的阶乘 * @param n * @return */s ...
java之运算符、表达式和语句
一、运算符1.1、赋值运算符(“=”)——太简单不深入了 但是还是提醒一下,左边必须是变量!!!避免0=1;的低级错误!!!
1.2、一元运算符 +/- ------正(负)号
! ------ NOT,非
~ ------代表取补码
++ ------ 自增运算符
-- ------ 自减运算符
🌂下面补充下补码的知识(百度查的,能看懂)
在计算机系统中,数值一律用补码来表示(存储)。主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。其中,正数的补码是它本身,而负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1;例如:求-5的补码。-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)所以 ...
java之数据类型
一、各种数据类型所占空间(没必要去记忆,了解即可)①基本字 节——byte——1字节短整型——short——2字节整 型—— int ——4字节长整型—— long——8字节布尔型——boolean—1bit单精度—— float ——4字节双精度——double——8字节字 符—— char ——2字节
②包装类整数类型对应的包装类为什么引入包装类?万物即对象,而像byte、short等不是对象,所以由包装类引入对象的概念;通常在后面加一个.可以得到其属性;详细见下面的代码byte——Byteshort——Shortint——Integerlong—–Longfloat—–Floatdouble—–Doublechar——Character
123456789public static void main(String[] args) { byte byte_max = Byte.MAX_VALUE; //最大值 byte byte_min = Byte.MIN_VALUE; //最小值 System.out.println("the maximum ...