public HypergraphSorter(final int numEdges,final boolean computeEdges){
  this.numEdges=numEdges;
  this.computeEdges=computeEdges;
  final int m=numEdges == 0 ? 0 : (int)Math.ceil(GAMMA * numEdges) + 1;
  numVertices=m + (3 - m % 3) % 3;
  partSize=numVertices / 3;
  vertex1=new int[numVertices];
  vertex2=new int[numVertices];
  edge=computeEdges ? new int[numVertices] : null;
  stack=new int[numEdges];
  d=new int[numVertices];
  visitStack=new IntArrayList(INITIAL_QUEUE_SIZE);
  neverUsed=true;
}

public HypergraphSorter ( final int numEdges , final boolean computeEdges ) { this . numEdges = numEdges ; this . computeEdges = computeEdges ; final int m = numEdges == 0 ? 0 : ( int ) Math . ceil ( GAMMA * numEdges ) + 1 ; numVertices = m + ( 3 - m % 3 ) % 3 ; partSize = numVertices / 3 ; vertex1 = new int [ numVertices ] ; vertex2 = new int [ numVertices ] ; edge = computeEdges ? new int [ numVertices ] : null ; stack = new int [ numEdges ] ; d = new int [ numVertices ] ; visitStack = new IntArrayList ( INITIAL_QUEUE_SIZE ) ; neverUsed = true ; }
creates a hypergraph sorter for a given number of edges .
