private int getTreeDepth() { // First +1 because all the non-leave nodes makes another power // of 2; e.g. to have a fully balanced tree with 4 leaves you // need a depth=3 tree: // Second +1 because MathUtil.log computes floor of the logarithm; e.g. // with 5 leaves you need a depth=4 tree: return MathUtil.log(numLeaves, 2) + 2; }
/** Creates a {@code MultiLevelSkipListWriter}. */ protected MultiLevelSkipListWriter(int skipInterval, int skipMultiplier, int maxSkipLevels, int df) { this.skipInterval = skipInterval; this.skipMultiplier = skipMultiplier; // calculate the maximum number of skip levels for this document frequency if (df <= skipInterval) { numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(df/skipInterval, skipMultiplier); } // make sure it does not exceed maxSkipLevels if (numberOfSkipLevels > maxSkipLevels) { numberOfSkipLevels = maxSkipLevels; } }
@Override public final void select(int from, int to, int k) { checkArgs(from, to, k); final int maxDepth = 2 * MathUtil.log(to - from, 2); quickSelect(from, to, k, maxDepth); }
@Override public final void sort(int from, int to) { checkRange(from, to); quicksort(from, to, 2 * MathUtil.log(to - from, 2)); }
numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(docCount/skipInterval[0], skipMultiplier);
private int getTreeDepth() { // First +1 because all the non-leave nodes makes another power // of 2; e.g. to have a fully balanced tree with 4 leaves you // need a depth=3 tree: // Second +1 because MathUtil.log computes floor of the logarithm; e.g. // with 5 leaves you need a depth=4 tree: return MathUtil.log(numLeaves, 2) + 2; }
/** Creates a {@code MultiLevelSkipListWriter}. */ protected MultiLevelSkipListWriter(int skipInterval, int skipMultiplier, int maxSkipLevels, int df) { this.skipInterval = skipInterval; this.skipMultiplier = skipMultiplier; // calculate the maximum number of skip levels for this document frequency if (df <= skipInterval) { numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(df/skipInterval, skipMultiplier); } // make sure it does not exceed maxSkipLevels if (numberOfSkipLevels > maxSkipLevels) { numberOfSkipLevels = maxSkipLevels; } }
/** Creates a {@code MultiLevelSkipListWriter}. */ protected MultiLevelSkipListWriter(int skipInterval, int skipMultiplier, int maxSkipLevels, int df) { this.skipInterval = skipInterval; this.skipMultiplier = skipMultiplier; // calculate the maximum number of skip levels for this document frequency if (df <= skipInterval) { numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(df/skipInterval, skipMultiplier); } // make sure it does not exceed maxSkipLevels if (numberOfSkipLevels > maxSkipLevels) { numberOfSkipLevels = maxSkipLevels; } }
/** Creates a {@code MultiLevelSkipListWriter}. */ protected MultiLevelSkipListWriter(int skipInterval, int skipMultiplier, int maxSkipLevels, int df) { this.skipInterval = skipInterval; this.skipMultiplier = skipMultiplier; // calculate the maximum number of skip levels for this document frequency if (df <= skipInterval) { numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(df/skipInterval, skipMultiplier); } // make sure it does not exceed maxSkipLevels if (numberOfSkipLevels > maxSkipLevels) { numberOfSkipLevels = maxSkipLevels; } }
@Override public final void select(int from, int to, int k) { checkArgs(from, to, k); final int maxDepth = 2 * MathUtil.log(to - from, 2); quickSelect(from, to, k, maxDepth); }
@Override public final void sort(int from, int to) { checkRange(from, to); quicksort(from, to, 2 * MathUtil.log(to - from, 2)); }
mtreeMergeIterations = (int)Math.round(log(options.fanout, reducers / options.shards));
numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(docCount/skipInterval[0], skipMultiplier);
numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(docCount/skipInterval[0], skipMultiplier);
numberOfSkipLevels = 1; } else { numberOfSkipLevels = 1+MathUtil.log(docCount/skipInterval[0], skipMultiplier);