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

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. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】
  2. 洛谷 - P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查(最大流最小割)
  3. 算法(9)--两个数的最大公约数
  4. 快速入门Matplotlib
  5. android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)
  6. 【AI视野·今日NLP 自然语言处理论文速览 第一期】Fri, 4 Jun 2021
  7. LCD屏参:手把手教你计算LCD屏参(proch值)
  8. android 控件总结,Android制霸控件View总结
  9. 最全的响应式设计资源库
  10. andorid studio 无法识别app项目解决
  11. 文档服务器设置密码,服务器密码设置要求
  12. panabit之MAC管控
  13. c语言健康指数,C-AHI——中国汽车健康指数
  14. Google at KDD 2020,提出MoSE框架显式建模用户行为序列提升多任务学习效果
  15. C语言求输入一个非负数,返回它组成数字之和
  16. 云桌面到底是干什么的?
  17. 从今开始,两耳不闻窗外事,一心搞dp
  18. 遗传算法锦标赛选择java实现_多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c...
  19. cycleInterpolator 循环加速器
  20. 夜光 带你走进设计模式(四)

热门文章

  1. 基于单片机测量空气粘滞系数方案
  2. 大学物理实验——分光计实验
  3. 麦肯锡:未来10年中国半导体企业有望实现全球领先
  4. OpenLayers开发离线地图源代码(OpenLayers开发谷歌高德百度地图)
  5. 最短路径--Dijkstra(狄克斯特拉)算法
  6. 前端开发桌面软件、技术博客整理等
  7. 开源python语音识别_python图像识别开源
  8. 轻量级3d模型查看器_NVIDIA这是要统领3D软件了么?感觉一股强大冲击波~
  9. 用友NC65 Rest接口开发及调试(一)
  10. node-ffi使用指南(转载)