示例#1
0
 private void initChildren(
     TreeFactory<T> treeFactory,
     SortableMemory<Column> cols,
     int childOffset,
     int start,
     int end,
     int[] selectiveBits,
     int prevSelBitIndex,
     int bitsToUse)
     throws IOException {
   if (end > start) {
     final int median =
         AbstractColumn.partition(cols, start, end, selectiveBits[++prevSelBitIndex]);
     if (bitsToUse > 1 && end > start + Leaf.MAX_LEAF_SIZE) {
       initChildren(
           treeFactory,
           cols,
           childOffset,
           start,
           median,
           selectiveBits,
           prevSelBitIndex,
           bitsToUse - 1);
       initChildren(
           treeFactory,
           cols,
           childOffset + (1 << (bitsToUse - 1)),
           median,
           end,
           selectiveBits,
           prevSelBitIndex,
           bitsToUse - 1);
     } else {
       children[childOffset] =
           treeFactory.createNode(cols, selectiveBits, prevSelBitIndex, start, median);
       children[childOffset + 1] =
           treeFactory.createNode(cols, selectiveBits, prevSelBitIndex, median, end);
     }
   }
 }