花了一周时间才想明白,稍后补上删除代码

package tree;import java.lang.reflect.Array;@SuppressWarnings("unchecked")
public class ProtoVEBTree {public Node root;public ProtoVEBTree(int length) {this.root = new Node(length);}public static class Node {protected int u;protected Object[] nodeArray;protected Node summary;/*Node的构造方法顺带初始化protoVEBTree*/protected Node(int u) {this.u = u;if (u == 2) {this.summary = null;this.nodeArray = new Object[2];this.nodeArray[0] = this.nodeArray[1] = 0;} else {int childSize = (int) (Math.sqrt(u));this.nodeArray = (Object[]) (Array.newInstance(Node.class, childSize));for (int i = 0; i < this.nodeArray.length; i++)this.nodeArray[i] = new Node(childSize);this.summary = new Node(childSize);}}protected int contain(int i) {if (u == 2)return (Integer) (this.nodeArray[i]);elsereturn ((Node) (this.nodeArray[i / this.nodeArray.length])).contain(i % this.nodeArray.length);}protected Integer minNum() {if (u == 2)if ((Byte) (nodeArray[0]) == 1)return 0;else if ((Byte) (nodeArray[1]) == 1)return 1;elsereturn null;else {Integer minCluster = summary.minNum();//找出最小元素所在的簇号if (minCluster == null)return null;else {int offset = ((Node) (nodeArray[minCluster])).minNum();return minCluster * nodeArray.length + offset;}}}public Integer successor(int x) {if (u == 2)if (x == 0 && ((Byte) (nodeArray[1])) == 1)return 1;elsereturn null;else {int highx = x / nodeArray.length;Integer offset = ((Node) nodeArray[highx]).successor(x % nodeArray.length);//先假定next和x在同一簇,求得next的偏移值if (offset != null)return highx * nodeArray.length + offset;else {//如果不在同一簇,先求出x所在簇的下一簇的簇号,然后求得下一簇的最小值Integer successorCluster = summary.successor(highx);return successorCluster == null ? null : successorCluster * nodeArray.length + ((Node) nodeArray[successorCluster]).minNum();}}}public void insert(int x) {if(u==2)nodeArray[x]=1;else{((Node)(nodeArray[x/u])).insert(x%u);summary.insert(x/u);}}}public int contain(int i) {return this.root.contain(i);}public Integer minNum() {return this.root.minNum();}public Integer successor(int x) {return this.root.successor(x);}public void insert(int x) {root.insert(x);}public static void main(String[] args) {Node s = new Node(16);System.out.println("ok");}}

java实现VEBTree原型相关推荐

  1. Java常用设计模式————原型模式(一)

    介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...

  2. java线程工作原型_深度解析Java内存的原型及工作原理

    本文主要通过分析Java内存分配的栈.堆以以及常量池详细的讲解了其的工作原理. 一.java虚拟机内存原型 寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是 ...

  3. Java中的原型设计模式

    Prototype design pattern is one of the Creational Design pattern, so it provides a mechanism of obje ...

  4. java自我复制_原型模式--自我复制(结合Java浅复制与深复制)

    原型模式,字面上的理解,以原型为标杆的模式. 原型模式其实就是从一个对象再创建另外一个可定制对象,而且不需知道任何创建的细节. 我们可以用原型示例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. ...

  5. how2java_HOW TO:构造Java类的原型

    how2java 在这篇HowTo帖子中,我将展示如何将一个类与另一个类一起定型. 为什么这有用? 当您的项目中发生许多BCI时,让每个开发人员编写BCI代码都是不明智的. 首先,这不会抽象出所使用的 ...

  6. java prototype是什么,java设计模式-原型模式(Prototype)

    定义 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是原型模式的用意 原型模式的结构 原型模式要求对象实现同一个可 ...

  7. java中的原型模式_java中的原型模式理解

    //测试类 public class TestPrototype { /** * @param args */ public static void main(String[] args) { She ...

  8. java设计模式中—原型模式

    文章目录 原型介绍 实现 原型模式 原型中拷贝 浅拷贝 深拷贝 使用clone 方式 序列化方式 总结 原型介绍 举个栗子:大话西游里,孙悟空对战牛魔王,孙悟空拔了一个猴毛一吹,变出了一堆" ...

  9. java设计模式之原型模式和建造者模式的写法(二)

    背景 原型模式和建造者模式属于创建型模式,在开发中经常会用到,那么这两种设计模式是怎么写的呢,下面进行代码演示. 原型模式 原型模式的核心就是复制 package com.example.protot ...

最新文章

  1. python3爬虫初探(三)之正则表达式
  2. ios刷android8.0,颤抖吧 iOS, Android 8.0正式发布!
  3. 将服务器get到的响应打印,得到HttpResponse的响应主体
  4. xp系统如何开启共享服务器,xp系统怎么关闭共享服务 xp系统共享打印机如何设置...
  5. 浅谈ARMv8-A系列CPU的架构
  6. FCPX安装插件位置及删除插件的方法
  7. android客户端设计,图文详解Android客户端界面设计教程
  8. Win7系统网络共享中心打不开,网络连接标识一直转圈
  9. 世界级软件平台企业,永洪科技要的就是这个范儿
  10. 无线网改了密码后连不上服务器了,修改wifi密码后连不上网了怎么办?
  11. Oracle AutoVue 21.0.x最新支持程序文件格式及版本
  12. 交换字符使得字符串相同
  13. 80后的罗敏已经在创业路上走了十几年
  14. 若A、B为同阶矩阵且A、B均可逆,则AB亦可逆
  15. Maven插件之versions-maven-plugin
  16. 3D游戏建模:胜似美杜莎的超细节刻画—《大海的精灵》| 模型欣赏
  17. 大气快速辐射传输模型RTTOV12.2安装教程及心得体会
  18. WannaCry病毒爆发并未对微软品牌造成太大影响
  19. 设计原则:单一职责原则
  20. 学习、恋爱、交朋友 大数据告诉你大学真相

热门文章

  1. 关于 1000台计算机的保险英语,如何为熊孩子“买对”保险?服务1000个家庭,我建议这样买...
  2. 使用分光光度计有哪些注意事项?简易型仪器和中档型仪器的区别看这里
  3. 半监督学习(Semi-Supervised Learning, SSL)-简述及论文整理
  4. 临沂大学计算机专业春考分数,临沂大学 汽修学院 春季高考 2017录取线
  5. Instagram协议源码实现群发的基础,无限群发攻略
  6. 算法 | 狄克斯特拉算法
  7. ASP.NET饭店管理系统
  8. C# Version 3.0 Specification
  9. 【瑞吉外卖】学习笔记-day5:(一)套餐管理开发——新增套餐、套餐分页查询、删除/起售/停售套餐
  10. 经典论文之GoogLeNet v1