Home Manual Reference Source Test

src/core/pop.js

import siftdown from './siftdown.js';

/**
 * Pops the root from a d-ary heap.
 *
 * Hypothesis : i < j
 *
 * @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 root
 * @param {int} j - 1 is the last leaf
 */

export default function pop(arity, compare, swap, a, i, j) {
	// Decrement size of heap

	--j;

	// Put last leaf at root

	const popped = a[i];
	a[i] = a[j];

	// Sift down the new root

	siftdown(arity, compare, swap, a, i, j, i);

	// Return old root

	return popped;
}