- 博客(41)
- 收藏
- 关注
原创 数组-链表-树存储方式
数组存储方式优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低链式存储方式优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)缺点:在进行检索时,效率仍然较低(比如:检索某个值,需要从头节点开始遍历)树存储方式能提高数据存储,读取的效率,比如利用二叉排序树,既可以保证数据的检索速度,同时也可以保证数据的插入,删除,修改的速
2022-05-28 17:01:56
117
原创 数据结构-哈希表
基本介绍散列表也叫哈希表,是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表package hashtab;import java.util.Scanner;public class HashTabDemo { public static void main(String[] args) { //创建哈希表 HashTab
2022-05-27 20:42:50
44
原创 数据结构-查找算法
java中,我们常用的查找有四种:1、顺序(线性)查找2、二分查找/折半查找3、插值查找4、斐波那契查找顺序查找二分查找二分查找思路分析:1、首先确定该数组的中间的下标mid = (left + right)/22、然后让需要查找的数findVal和arr[mid]比较2.1 findVal>arr[mid],说明你要查找的数在mid的右边,因此需要递归的向右查找2.2 findVal<arr[mid],说明你要查找的数在mid的左边,因此需要递归的向左查找2.3 fi
2022-05-26 17:40:12
349
原创 数据结构-排序算法(2)
希尔排序希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,称为缩小增量排序基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减小,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止1、希尔排序时,对有序序列在插入时采用交换法2、希尔排序时,对有序序列在插入时采用移动法快速排序快速排序是对冒泡排序的一种改进基本思想:通过一趟排序将要排序的数据分隔成独立的两部分,其中一部分的所有数据都比另外一部分的
2022-05-20 16:13:03
107
原创 数据结构-排序算法(1)
排序也称排序算法,排序是将一组数据,依指定的顺序进行排列的过程排序的分类1、内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序2、外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序内部排序包括:插入排序(直接插入排序、希尔排序)、选择排序(简单选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序、基数排序时间复杂度度量一个程序(算法)执行时间的两种方法:1、事后统计的方法这种方法可行,但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运
2022-05-18 16:06:01
197
原创 数据结构-递归
递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于解决复杂的问题递归用于解决什么问题?1、各种数学问题:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子问题2、各种算法中也会使用递归,比如:快排、归并排序、二分查找、分治算法3、将用栈解决的问题->递归代码比较简洁递归需要遵守的重要规则:1、执行一个方法时,就创建一个新的受保护的独立空间(栈空间)2、方法的局部变量是独立的,不会相互影响3、如果方法中使用的是引用类型变量,就会共享该引用类型的数据4、递归必须向退出递归
2022-05-12 11:04:31
581
原创 数据结构-栈
栈(stack)栈是一个先入后出的有序列表栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表,允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反栈的应用场景1、子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中2、处理递归调用:和子程序的调用类似,只是除了储存下一个指令的地址外,也将参数、区域变
2022-05-09 16:49:46
158
原创 数据结构-单向环形链表(约瑟夫问题)
package linkedlist;public class Josephu { public static void main(String[] args) { //测试构建环形链表和遍历 CircleSingleLinkedList circleSingleLinkedList = new CircleSingleLinkedList(); circleSingleLinkedList.addBoy(20); //circle
2022-04-26 20:35:09
866
原创 数据结构-双链表
单向链表的缺点:1、单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找2、单向链表不能自我删除,需要靠辅助节点,而双向链表可以自我删除
2022-04-26 16:15:14
847
原创 数据结构-单链表
链表(Linked List)是有序的列表1、链表是以节点的方式来存储2、每个节点包含data域,next域:指向下一个节点3、链表的各个节点不一定是连续存储4、链表分带头节点的链表和没有头节点的链表,根据实际需求来确定...
2022-04-20 19:37:28
97
原创 Java练习题-罗马数字转整数
/*罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D,M分别代表数值1,5,10,50,100,500,1000例如, 罗马数字 2 写做II,即为两个并列的 1 。 12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。注意:1、1 <= s.length <= 152、s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')3、题目数据保证 s 是一个有效的
2022-04-13 11:10:01
233
原创 Java练习题-水仙花数
//水仙花数public class Flower { public static void main(String[] args) { //100-999之间的水仙花数个数 /*int count = 0; for (int i = 100; i <= 999; i++) { int j = i / 100; int k = (i % 100) / 10; int l =
2022-04-07 22:04:16
309
原创 Java练习题-回文数
import java.util.Scanner;//判断回文数public class Demo3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int input = sc.nextInt(); String s = String.valueOf(input); String r = new StringBuffe
2022-04-07 22:02:19
260
原创 Java练习题-亲和串
import java.util.Scanner;//判断亲和串public class Demo2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next(); String str3 = str1 + str1; if
2022-04-07 22:00:15
482
原创 Java练习题-素数判断
import java.util.Scanner;//判断素数public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int count = 0; for (int i = 2; i <= (int) Math.sqrt(n); i++){
2022-04-07 21:56:51
248
原创 数据结构-稀疏数组
第一节 稀疏数组二维数组转稀疏数组的思路1、遍历原始的二维数组,得到有效数据的个数sum2、根据sum就可以创建稀疏数组sparseArr int[sum+1] [3]3、将二维数组的有效数据存入到稀疏数组稀疏数组转原始的二维数组的思路1、先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组2、在读取稀疏数组后几行的数据,并赋给原始的二维数组即可...
2022-04-07 17:35:17
44
原创 MySQL
第一节 数据库1.1 数据库的基本概念数据库:DataBase,简称:DB用于存储和管理数据的仓库数据库的特点:1、持久化存储数据的,其实数据库就是一个文件系统2、方便存储和管理数据3、使用了统一的方式操作数据库–>SQL...
2022-03-18 20:57:02
467
原创 JAVA-异常与多线程
第一节 异常1.1 异常概念与体系异常:指的是程序在执行过程中,出现的非正常情况,最终会导致JVM的非正常停止在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象java处理异常的方式时中断处理异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable其下有两个子类:java.lang.Errorjava.lang.Exceptionjava.lang.Throwable:类是java语言中所有错误或异常的超类E
2022-02-16 16:06:59
230
原创 JAVA-集合
第一节 Collection集合1.1 集合框架介绍1.2 Collection集合常用功能java.util.Collection接口所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法任意的单列集合都可以使用Collection接口中的方法共性的方法:public boolean add(E e):把给定的对象添加到当前集合中public void clear():清空集合中所有的集合public boolean remove(E e):把给定的对象在当前集合中删除pub
2022-02-11 16:54:54
301
原创 JAVA-常用API(2)
第一节 Object类1.1 Object类的toString方法1.2 Object类的equals方法Person类默认继承了Object类,所以可以使用Object类的equals方法boolean equals(object obj)指示其他某个对象是否与此对象“相等”注意:基本数据类型:比较的是值引用数据类型:比较的是两个对象的地址值public class Equals { public static void main(String[] args) {
2022-01-25 16:45:18
104
原创 JAVA-面向对象和封装
第一节 面向对象思想面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,帮助完成import java.util.Arrays;public class Demo17PrintArray { public static void main(String[] args) { int[] array = {10, 20, 30}; //使用面向过程,
2022-01-03 15:25:29
188
原创 JAVA基础语法1
第一节 Java运行环境1.1 计算机存储单元位(bit):一个数字0或者一个数字1,代表一位。字节(Byte):每逢8位是一个字节,这是数据存储的最小单位。1Byte=8 bit 1KB=1024Byte1MB=1024KB 1GB=1024MB1TB=1024GB 1PB=1024TBeg.办理100Mbps的宽带,实际下载速率100/8=12.5MB/s。1.2 命令提示符(cmd)启动:【win+R 输入cmd回车】切换盘符:【盘符名称:】
2021-11-05 15:59:27
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人