java
ZJLZJLhyy
这个作者很懒,什么都没留下…
展开
-
逆置单链表顺序逆置 时间复杂度O(1),空间复杂度O(1),递归逆置 时间复杂度O(1),空间复杂度O(1)
package com.zjl.dataStract;/** * @Author: Zjl * @Date: 2022/3/21 17:20 */public class InversionLinkList { public static void main(String[] args) { Node node1 = new Node(null, 44); Node node2 = new Node(node1, 55); Node n原创 2022-03-22 17:43:34 · 1154 阅读 · 0 评论 -
归并两个降序序链表为一个新的降序链表,java实现,时间复杂度O(n),空间复杂度O(1)
并两个降序序链表为一个新的降序链表,java实现,时间复杂度O(n),空间复杂度O(1)原创 2022-03-15 16:37:45 · 899 阅读 · 0 评论 -
创建线程的三种方式
创建线程的三种方式方法一:实现 Runnable, 接口 实现 run() 方法方法二:继承 Thread 类, 重写 run() 方法方法三:使用 lambda 表达式code demoimport java.util.concurrent.TimeUnit;/** * Created with IntelliJ IDEA. * Description: * * @Author: ZhaoJinlei * DateTime: 2021-08-28 22:53:33 */publ原创 2021-08-28 23:18:57 · 78 阅读 · 0 评论 -
java深克隆实现方式
方法1:重写clone()方法在方法里将对象成员变量中的引用类型也clone一份,并将clone的对象的引用指向clone的引用对象;以Sheep类为例代码如下import java.util.Date;public class Sheep { private String name; private Date createTime; public Sheep(String name, Date createTime) { this.name = name;原创 2020-11-04 20:41:32 · 780 阅读 · 0 评论 -
建造者模式
简述将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构 造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。代码描述- 手机类public class Phone { private Screen screen; private Shell shell; private Cpu cpu; public Screen getSc原创 2020-11-03 22:20:38 · 106 阅读 · 0 评论 -
工厂模式【简单工厂模式,工厂方法模式。抽象工厂模式】
简单工厂模式通过phoneFactory创建手机对象【实现简单,不易扩展】手机类package SimpleFactory;//手机public interface Phone { void call(); void sendMessage();}package SimpleFactory;//苹果手机public class Iphone implements Phone { @Override public void call() {原创 2020-11-03 21:42:06 · 103 阅读 · 0 评论 -
单例模式中防止反射和反序列化创建新对象的处理办法
DEMOimport java.io.Serializable;public class SingletonDemo implements Serializable { private static SingletonDemo instance; //私有构造方法 private SingletonDemo() { //防止反射 if(instance!=null) throw new RuntimeExceptio原创 2020-11-02 21:26:05 · 326 阅读 · 0 评论 -
单例模式5种实现方法
俄汉式(不能懒加载)/** * 优点:线程安全,调用效率较高 * 缺点:不能懒加载 */public class Sinleton { //1.私有化构造器 private Sinleton() { } //2.立即加载对象 private static Sinleton instance = new Sinleton(); //3.提供访问接口 public static Sinleton getInstance(){原创 2020-11-02 19:59:21 · 134 阅读 · 0 评论 -
创建一颗哈夫曼树的代码实现(使用java语言)
树节点定义import java.util.Comparator;public class Node{ private Node left; // private Integer data;//数据域 private Node right; public Node() { } public Node(Integer data) { this.data = data; } public Node(Node left原创 2020-10-23 09:37:39 · 243 阅读 · 0 评论 -
堆排序的代码实现(java语言实现)
实现代码public class Heap { public static void main(String[] args) { //调整堆测试 int arr[] = {1,0,3,2,6,5,4,9}; //调整堆 for(int i=arr.length/2-1;i>=0;i--) { adjust(arr,i,arr.length-1); } //调整堆结果 System.out.println("调整堆结果"); for(int原创 2020-10-22 20:26:49 · 95 阅读 · 0 评论 -
斐波那契查找算法的实现(又称黄金分割查找法;【java语言实现】)
核心思想由斐波那契数列 F[k]=F[k-1]+F[k-2] 的性质,可以得到 (F[k]-1)=(F[k-1]-1)+(F[k-2]-1)+1 。该式说明:只要顺序表的长度为F[k]-1,则可以将该表分成长度为F[k-1]-1和F[k-2]-1的两段,从而中间位置为mid=low+F(k-1)-1将mid作为顺序表的分割点实现代码package com.zhaojinlei.test;import java.util.Arrays;/** * className:FibonacciSe原创 2020-09-05 19:46:13 · 180 阅读 · 0 评论 -
单例模式的实现方式(懒汉模式、俄汉模式,java语言)
饿汉模式优点:线程安全,调用效率较高缺点:不能懒加载实现方式/** * 优点:线程安全,调用效率较高 * 缺点:不能懒加载 */public class Sinleton { //1.私有化构造器 private Sinleton() { } //2.立即加载对象 private static Sinleton instance = new Sinleton(); //3.提供访问接口 public static Sinleton原创 2020-08-19 20:27:36 · 156 阅读 · 0 评论 -
插值查找法的代码实现(二分查找算法的改进,java语言实现)
简述对二分查找算法对mid(中间节点)的计算进行改进使 mid = (low + (high - low) *(val - R[low])/(R[high] - R[low]);如此,若是被查找的数值的索引在数组的边缘部分查找效率将大大提高;从测试结果看:查找11 需要查找2次,查找92仅需元查找一次;实现代码/** * className:Search * * @author:zjl * @version:0.1 * @date:2020/8/1910:16 * @since:j原创 2020-08-19 11:10:26 · 202 阅读 · 0 评论 -
基数排序的代码实现(LSD的基数排序[最低位优先,适用于位数小的数列],java语言)
思想(来自百度百科)** 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。**实现代码import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/** * className:Sort * * @author:zjl * @version:0.1 * @da原创 2020-08-18 22:36:12 · 393 阅读 · 0 评论 -
八皇后问题的代码实现(回溯法找到所有可行摆放方法,java语言)
*问题表述为:(表述来自百度百科)*在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题.代码实现/** * className:EightQueen * * @author:zjl原创 2020-08-15 21:47:43 · 184 阅读 · 0 评论 -
迷宫问题(求一条可行路径(java语音实现,递归法))
迷宫问题/** * * @author zjl * */public class Maze { public static void main(String[] args) { //创建地图 int[][] maze = createMazeMap(); //输出地图 for(int i = 0;i<8;i++) { for(int j = 0;j<8;j++) { System.out.print(maze[i][j]+" "); }原创 2020-08-11 21:47:51 · 122 阅读 · 0 评论 -
归并排序的代码实现(二路归并,java语言)
归并排序算法实现思想:先递归划分子序列,再回溯归并/** * className:Sort * * @author:zjl * @version:0.1 * @date:2020/8/817:17 * @since:jdk1.8 */public class Sort { //测试 public static void main(String[] args) { int[] A = {1, 3, 8, 4, 7, 5, 2, 6, 9};原创 2020-08-08 21:35:54 · 205 阅读 · 0 评论 -
简单选择排序的代码实现(java语言)
简单选择排序/** * className:Sort * * @author:zjl * @version:0.1 * @date:2020/8/720:55 * @since:jdk1.8 */public class Sort { //测试 public static void main(String[] args) { int R[] = {1,5,9,4,8,7,6,3,2}; int[] ints = selectSort(R)原创 2020-08-07 21:23:11 · 225 阅读 · 0 评论 -
快速排序的代码实现(java语言)
快速排序/** * className:Sort * * @author:zjl * @version:0.1 * @date:2020/8/720:05 * @since:jdk1.8 */public class Sort { //测试 public static void main(String[] args) { int R[] = {1, 5, 9, 2, 6, 3, 7, 4, 8}; int[] ints = quickSort原创 2020-08-07 20:39:37 · 153 阅读 · 0 评论 -
冒泡排序的代码实现(java语音)
冒泡排序的代码实现(算法思想在注释中)/** * className:Sort * * @author:zjl * @version:0.1 * @date:2020/8/622:10 * @since:jdk1.8 */public class Sort { //测试 public static void main(String[] args) { int R[] = {1,5,9,3,2,8,7,4,6}; int[] ints = bubbl原创 2020-08-06 22:35:56 · 101 阅读 · 0 评论 -
希尔排序(最小增量排序)的代码实现(java语言)
算法思想:(增量选择有多种方法,当前选用的是Shell本人提出的一种方法)选取初始增量 increment = 序列长度/2 (java自动向下取整)根据当前增量进行划分对划分好的每组进行插入排序增量 increment = increment/2,重复步奏2,3 直到增量 increment = 1实现代码和测试结果import java.util.Arrays;/** * className:Sort * * @author:zjl * @version:0.1原创 2020-08-06 21:48:19 · 143 阅读 · 0 评论 -
折半插入排序的代码实现(java语言)
折半插入排序(算法思想在注释中)/** * className:Sort * * @author:zjl * @version:0.1 * @date:2020/8/615:17 * @since:jdk1.8 */public class Sort { //测试 public static void main(String[] args) { int R[] = {1,5,9,6,2,3,8,4,7}; int[] ints = binar原创 2020-08-06 16:04:50 · 268 阅读 · 0 评论 -
直接插入排序的代码实现(java语言)
直接插入排序(算法思想在注释中)/** * className:Sort * * @author:zjl * @version:0.1 * @date:2020/8/614:43 * @since:jdk1.8 */public class Sort { //测试 public static void main(String[] args) { int R[] = {8,5,2,1,4,7,9,6,3}; int[] ints = Inser原创 2020-08-06 15:14:06 · 169 阅读 · 0 评论 -
中缀表达式转前缀表达式的java代码实现(思路在代码注释中,由于减号和符号无法区分 故所有减法作负数加法计算)
工具类(包含表达式切割方法,和实现方法)import java.util.ArrayList;import java.util.List;import java.util.Stack;import java.util.regex.Pattern;/** * className:Util * * @author:zjl * @version:0.1 * @date:2020/8/419:53 * @since:jdk1.8 */public class Util { /**原创 2020-08-05 13:41:29 · 180 阅读 · 0 评论 -
中缀表达式转后缀表达式的java代码实现(思路在代码注释中,由于减号和符号无法区分 故所有减法作负数加法计算)
工具类(包含表达式切割方法,和实现方法)import java.util.ArrayList;import java.util.List;import java.util.Stack;import java.util.regex.Pattern;/** * className:Util * * @author:zjl * @version:0.1 * @date:2020/8/419:53 * @since:jdk1.8 */public class Util { /**原创 2020-08-05 09:57:27 · 238 阅读 · 0 评论 -
中缀表达式的计算的java实现(使用栈(双栈)实现)
工具类(包含实现方法)import java.math.BigDecimal;import java.util.HashMap;import java.util.Stack;/** * className:Util * * @author:zjl * @version:0.1 * @date:2020/8/121:36 * @since:jdk1.8 */public class Util { /** * 实现方法 * * @param s原创 2020-08-03 21:28:53 · 266 阅读 · 0 评论 -
二叉树先序遍历非递归实现(使用java语言)
节点定义/** * className:TreeNode * * @author:zjl * @version:0.1 * @date:2020/7/1912:49 * @since:jdk1.8 */public class TreeNode { private TreeNode left; private Object data; private TreeNode right; public TreeNode() { this.lef原创 2020-07-19 13:35:59 · 655 阅读 · 0 评论 -
单链表逆置的三种方法(头插法逆置、就地逆置、递归逆置)顺序表【数组】的逆置的代码实现(使用java语言实现,用对象模拟内存结构和指针)
单链表节点定义/** * className:LNode * * @author:zjl * @version:0.1 * @date:2020/7/1622:25 * @since:jdk1.8 */public class LNode { private Object data; private LNode next; public LNode() { this.data = null; this.next = null;原创 2020-07-17 18:48:30 · 1238 阅读 · 0 评论 -
查找单链表的倒数第k个节点(java代码实现)
单链表节点定义/** * className:LNode * * @author:zjl * @version:0.1 * @date:2020/7/1520:22 * @since:jdk1.8 */public class LNode { private Object data; private LNode next; public LNode() { this.data=null; this.next=null; }原创 2020-07-15 21:12:00 · 583 阅读 · 0 评论 -
栈基本操作的java代码实现(建栈,初始化栈、进栈、出栈)
定义栈/** * className:Statck * * @author:zjl * @version:0.1 * @date:2020/7/1512:22 * @since:jdk1.8 */public class Statck { private int maxSize;//栈最大容量 private int top;//栈顶指针(始终指向栈顶的节点) private Object[] stack; public Statck(int max原创 2020-07-15 13:28:45 · 2476 阅读 · 0 评论 -
将两个非递增单链表归并为一个非递增单链表(不再另外开辟内存空间,使用要归并的两个单链表所占的内存空间)(使用java代码实现,使用对象模拟数据结构)
工具类(包括归并方法和单链表遍历输出方法)/** * className:Util * * @author:zjl * @version:0.1 * @date:2020/7/1420:12 * @since:jdk1.8 */public class Util { /** * 将单链表a,b按照非递增有序归并为单链表c * @param a * @param b * @return c */ public LinkList原创 2020-07-14 21:16:54 · 256 阅读 · 0 评论 -
二叉树的层次遍历、先序遍历、中序遍历、后序遍历以及满二叉树的建立方法的java代码实现(先中后遍历采用递归法)
节点定义/** * className:Node * * @author:zjl * @version:0.1 * @date:2020/7/1219:39 * @since:jdk1.8 */public class Node { private Node lChild;//左指针域 private Object data;//数据域 private Node rChild;//右指针域 public Node(Node lChild, Object原创 2020-07-13 21:56:10 · 111 阅读 · 0 评论 -
稀疏矩阵压缩算法(伪地址)的java代码实现(压缩和解析)
压缩和解析功能实现import java.lang.reflect.Array;/** * className:Matrix * * @author:zjl * @version:0.1 * @date:2020/7/1111:37 * @since:jdk1.8 */public class Matrix { /** * 伪地址法压缩矩阵 * @param obj * @return */ public int[][] pres原创 2020-07-11 14:21:07 · 366 阅读 · 0 评论 -
循环单链表基本操作的java代码实现(使用java语言实现循环单链表的创建【头插】【尾插】、插入)
循环双链表节点结构定义/** * className:Node * * @author:zjl * @version:0.1 * @date:2020/7/1016:35 * @since:jdk1.8 */public class Node { private Object data; private Node next; public Node(Object data, Node next) { this.data = data;原创 2020-07-10 19:11:51 · 650 阅读 · 0 评论 -
双链表基本操作的java代码实现(双链表的创建【头插法】【尾插法】、查找、插入、删除操作)
双链表节点定义/** * className:DLinkList * * @author:zjl * @version:0.1 * @date:2020/7/1012:49 * @since:jdk1.8 */public class DLinkList { private Node p; /** * 创建一个头节点 * 初始化链表 * @param p */ public DLinkList() { th原创 2020-07-10 14:30:39 · 384 阅读 · 0 评论 -
单链表基本操作的java代码实现(使用java语言,用对象模拟单链表节点和单链表,实现单链表的建立[头插法][尾插法]、插入、查找、删除、替换和长度获取)
定义单链表节点```java/** * className:LinkListNoed * * @author:ZJL * @version:0.1 * @date:2020/7/814:27 * @since:jdk1.8 */public class LinkListNoed { /** * 定义节点 */ private Object date; //数据域 private LinkListNoed pNext; //指针域原创 2020-07-08 19:13:53 · 373 阅读 · 0 评论 -
循环队列基本操作的java代码实现(使用数组模拟队列,实现队列初始化,入队,出队)
java实现循环队列操作使用 类 模拟定义队列public class LoopQueue { int maxSize; //定义队列最大容量 int front; //模拟头指针 int rear; //模拟尾指针 Object[] array; //使用数组模拟内存空间 /** * 循环队列初始化 * @param maxSize */ public LoopQueue(int maxSize) { // TODO Auto-generated construc原创 2020-07-07 16:02:50 · 931 阅读 · 0 评论 -
队列基本操作(初始化、入队、出队)的java代码实现(使用数组模拟队列,实现队列的初始化、入队、出队操作)
Queue类:1、定义队列2、使用带参构造初始化队列3、成员方法定义入队出队操作public class Queue { int maxSize;//队列最大容量 int rear;//模拟队列头指针 int front;//模拟队列尾指针 Object[] array; //使用数组模拟队列 /** * 队列初始化 * @param maxSize 队列最大容量 * @return */ public Queue(int maxSize) { rear =原创 2020-07-06 19:47:07 · 2400 阅读 · 0 评论 -
稀疏矩阵压缩算法(三元组法)的java代码实现(稀疏矩阵压缩为三元组和三元组解析为稀疏矩阵)
实现代码如下public class SparseArray { /** * 测试 * @param args */ public static void main(String[] args) { //数组初始化 int[][] array = new int[8][8]; for(int i=0;i<array.length;i++) { for(int j=0;j<array[0].length;j++) { array[i][j]=0;原创 2020-07-06 17:09:06 · 363 阅读 · 0 评论