diff --git a/jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java b/jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java new file mode 100644 index 0000000000000000000000000000000000000000..f6239e0de2c5e6f32318504e190c4bf0d1558b90 --- /dev/null +++ b/jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java @@ -0,0 +1,70 @@ +package com.jlh.viewer.algorithm; + +import java.lang.reflect.Array; + +/** + * Created by jlh + * On 2017/3/15 0015. + */ +public class MHeap { + private Class type; + private T[] datas; + private int store; + public MHeap(int size,Class type){ + this.type=type; + datas= (T[]) Array.newInstance(type,size); + store=0; + } + public boolean push (T d){ + if (datas.length>store){ + int k=store; + datas[store++]=d; + if (k>=1) { + adjust((k-1)/2); + } + } + return false; + } + + public T pop (){ + if (store>0){ + swap(0,store-1); + store--; + adjust(0); + return datas[store]; + } + return null; + } + + private void adjust (int parent){ + int l=parent*2+1; + int r=parent*2+2; + int index = parent; + if (l mHeap = new MHeap<>(15,Integer.class); + mHeap.push(5); + mHeap.push(3); + mHeap.push(6); + System.out.println(mHeap.pop()); + } +} diff --git a/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java b/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java new file mode 100644 index 0000000000000000000000000000000000000000..d8305e4d668784ec69f7b4b60a5b73ccb0e6075d --- /dev/null +++ b/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java @@ -0,0 +1,25 @@ +package com.jlh.viewer.algorithm; + +/** + * Created by jlh + * On 2017/3/15 0015. + */ +public class TreeIntroduce { + /* ---->最大堆 + * 树 ---->二叉树------>完全二叉树---->堆 | + * | ---->最小堆 + * --->满二叉树 + * + * + * + * 度:指某个节点所拥有的子节点数量 + * 完全二叉树:k-1层 满节点 ,k层从左往右填满 + * 满二叉树:所有节点都满 ,第K层 节点数量 2^(k-1) 总结点数量 2^k-1 + * 堆:一般就是大小堆,是特殊的完全二叉树,节点值大于或小于子节点 + * + * + * 根据前序和中序还原二叉树:前序遍历第一个一定是树的根节点,然后从中序中找到根节点位置,从左填起 + * 划分两段左边为根节点左子树,右为右子树,按照以上步骤递归左右子树 + * 同理中序和后序还原从后序的倒数第一个开始从右填起,但是前后无法还原 + * */ +} diff --git a/jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java b/jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java new file mode 100644 index 0000000000000000000000000000000000000000..f7f45c05eae4b032222c75d7f54c9c8acb1c1e3f --- /dev/null +++ b/jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java @@ -0,0 +1,19 @@ +package com.jlh.viewer.memory; + +/** + * com.jlh.viewer.memory + * Created by ASUS on 2017/3/14. + * 22:07 + */ +public class JavaMemoryLeak { + //假定只有method 使用了data对象,其他方法都没使用 + //此处从某种意义上也算JAVA简单的内存泄漏 + //那么在method方法结束后,data的区域并不会被回收,只有在memory对象回收后才会被回收 + //总结 内存泄漏即 短生命周期对象被长生命对象持有,使段生命周期对象到了回收时间点却不被回收 + static class Memory{ + private Object data; + public void method(){ + data=new Object(); + } + } +}