Home Manual Reference Source Test

src/core/nextchild.js

/**
 * Computes which child is the smallest according
 * to a comparison function.
 *
 * Hypothesis : i < j i.e. there should be at least one child
 *
 * @param {int} arity arity of the heap
 * @param {function} compare the comparison function
 * @param {function} swap the swap function
 * @param {array} a the array where the heap is stored
 * @param {int} i is the first child
 * @param {int} j - 1 is the last leaf
 */

export default function nextchild(arity, compare, swap, a, i, j) {
	const k = i + Math.min(arity, j - i);

	let best = i;

	for (++i; i < k; ++i) {
		if (compare(a[i], a[best]) < 0) {
			best = i;
		}
	}

	return best;
}