protected void createFromHValues(int[] hValues,int partitions){
  Arrays.sort(hValues);
  this.splits=new int[partitions];
  int maxH=0x7fffffff;
  for (int i=0; i < splits.length; i++) {
    int quantile=(int)((long)(i + 1) * hValues.length / partitions);
    this.splits[i]=quantile == hValues.length ? maxH : hValues[quantile];
  }
}

protected void createFromHValues ( int [ ] hValues , int partitions ) { Arrays . sort ( hValues ) ; this . splits = new int [ partitions ] ; int maxH = 0x7fffffff ; for ( int i = 0 ; i < splits . length ; i ++ ) { int quantile = ( int ) ( ( long ) ( i + 1 ) * hValues . length / partitions ) ; this . splits [ i ] = quantile == hValues . length ? maxH : hValues [ quantile ] ; } }
create a hilbertcurvepartitioner from a list of points
