- 博客(15)
- 收藏
- 关注
原创 原型模式、建造者模式、装饰器模式
原型模式必须让目标了实现Cloneable接口,该接口中没有任何方法,这样的接口仅仅为一个“标记接口”,作用是告诉Jvm,任何实现了Cloneable接口的类的对象都可以被克隆!必须写Java.lang.Object的clone方法,一定要把该方法的访问修饰符,重写为public!不然无法调用clone方法克隆方法不会引起构造调构造器!那么clone如何实现对象的clone?clone方法...
2020-04-13 11:31:45
288
原创 工厂设计模式
工厂设计模式:简单工厂、工厂方法、抽象工厂面向接口编程示意图:相关概念:产品、抽象产品、产品蔟、产品等级产品:类抽象产品:抽象类和接口产品蔟:多个有内在联系,或者是有关系的产品简单工厂:解耦了客户端与服务器代码//抽象产品interface Food{ public void eat();}//具体产品class Hamburger implements Food{...
2020-04-12 15:43:17
173
原创 设计模式:七大设计原则
绪论:设计模式是前辈们不断总结,不断打磨出的设计方法,不同设计模式适应于不同的场景设计模式,公认的有23种设计模式,不同的设计模式适用于不同的场景设计模式有优点,也有缺点不要为了使用设计模式而使用设计模式,切记防止“模式的滥用”23种设计模式,其背后是7大设计原则。也就是说,每一个设计模式都归于一个或多个设计原则7大设计原则的背后又是一个字,分。7大设计原则,分...
2020-04-11 11:06:58
162
原创 图的构建深度优先和广度优先
图结构1. 图的构建<pre>package GraphPackage;import java.util.Arrays;class Edge{ String beginCity; String endCity; int cost; public Edge(String beginCity, String endCity, int cost) { super()...
2020-02-21 14:57:06
140
原创 二叉树的前序中序后续遍历
二叉树的遍历遍历:按照某一种次序依次访问各个结点,每个结点恰好访问一次。二叉树前序遍历1.递归实现前序遍历<pre>public static void main(String[] args) { //设置结点之间的关系 BinNode root = new BinNode(0); BinNode node1 = new BinNode(1); BinNode no...
2020-01-13 17:27:13
106
原创 二叉树
二叉树二叉树结点的构建<pre>class BinNode{ public int data; public int height; public BinNode parent; public BinNode left; public BinNode right; public BinNode(int data) { super(); this.data = ...
2020-01-11 15:46:56
117
原创 栈--中缀表达式与逆波兰表达式
栈构造一个栈类<pre>class StackArray{ public int maxiSize; public int[] stack; public int top; public StackArray(int maxiSize) { //构造一个栈 this.top = -1; this.maxiSize = maxiSize; stack = n...
2020-01-10 20:46:23
189
原创 选择排序和插入排序
选择排序和插入排序选择排序选择排序:选择排序的思路是从一组元素中逐次选择最大的元素,放在无序元素末端,具体的实现过程如下图所示。因此选择排序需要存在以下几个接口:1.selectMax(p,n):从节点p开始,在节点p前n个节点中(不包括节点p)选择一个节点返回。<pre>public static ListNode selectMax(ListNode p, int n)...
2020-01-09 17:25:45
171
原创 无序链表和有序链表
链表–无序链表无序链表的相关接口寻秩访问–rank2data(head,rank),时间复杂度为O(rank),复杂度与rank成正比,以均匀分布为例,期望的时间复杂度为O(n),其中n为链表的长度<pre>public class LinkedList { public static void main(String[] args) { //创建一个链表node1...
2020-01-07 20:30:33
1376
原创 冒泡排序与归并排序
冒泡排序与归并排序冒泡排序方法一:思想是相邻元素逐个比较,然后将最大的放在后面。每遍历完一次,就会有一个元素就位,所以时间复杂度为O(n^2)<pre>public class LinearRecur { public static void main(String[] args) { int[] b = {7,6,10,9,12,15}; int low = 0...
2020-01-07 13:45:36
643
原创 二分查找与斐波那契查找
数据结构–查找二分查找方法一:轴点取中点,逐步递归。算法时间复杂度O(log[n])。主要思路如下图:<pre>public class LinearRecur { public static void main(String[] args) { int[] b = {2,6,6,9,10,10}; int low = 0; int high = b.len...
2020-01-06 22:37:16
411
原创 数据库系统相关概念
数据库系统定义:数据库:相互有关联关系的数据集合数据库管理系统:管理数据库的一种系统软件数据库语言:通过数据库语言开发数据库应用程序现实世界>>>>>信息世界>>>>>计算机世界由现实世界到信息世界:我们需要对数据进行建模(信息模型)由信息世界到计算机世界:我们需要进行数据库设计主要内容:数据库系统之–基本关系...
2020-01-05 17:17:22
221
原创 数组扩容--无序数组
数据结构数组扩容–如何对一个数组进行有效的扩容静态空间管理:开辟内部数组并适用一段地址连续的物理空间,capacity为总容量,size为当前的实际规模。若采用静态空间策略管理,容量capacity固定,则存在明显的不足。上溢:capacity空间不够,不足以存放所有元素下溢:capcity空间过大,存放的元素寥寥无几,装填因子(load factor) u=size/capacity ...
2020-01-05 14:07:52
257
原创 动态规划
动态规划问题一:斐波那契数列问题:斐波那契数列是指存在递推关系为:fib(n)=fib(n-1)+fib(n-2),且fib(0)=0,例如{0,1,1,2,3,5,8,13,…}就是一个斐波那契数列问题:给定n,求解对应的fib(n)迭代法一:<pre>public class LinearRecur { public static void main(String...
2020-01-04 22:40:53
144
原创 递归与迭代
数据结构第一部分:对于一个数组求和问题的两种思路减而治之: 时间复杂度:O(n) public class LinearRecur { public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7,8,9}; int length = array.length; int sum = 0;...
2020-01-04 15:04:01
125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人