The code for the sift down operation is presented as follows:
siftDown(index) { let element = index; const left = this.getLeftIndex(index); // {1} const right = this.getRightIndex(index); // {2} const size = this.size(); if ( left < size && this.compareFn(this.heap[element], this.heap[left]) > Compare.BIGGER_THAN ) { // {3} element = left; // {4} } if ( right < size && this.compareFn(this.heap[element], this.heap[right]) > Compare.BIGGER_THAN ) { // {5} element = right; // {6} } if (index !== element) { // {7} swap(this.heap, index, element); // {8} this.siftDown(element); // {9} }}
The siftDown method receives the index of the removed value. We will make a copy of the received index in the element variable. ...