上述代码首先记载0下标处的元素,并用末了一个元素替换0下标位置的元素,之后调用siftDown()方法对堆举行调解,末了返回原来0下标处的谁人元素(也就是最小的谁人元素)。重点是siftDown(int k, E x)方法,该方法的作用是从k指定的位置开始,将x逐层向下与当前点的左右孩子中较小的谁人交换,直到x小于或即是左右孩子中的任何一个为止。
[code]//siftDown()private void siftDown(int k, E x) { int half = size >>> 1; while (k < half) { //首先找到左右孩子中较小的谁人,记载到c里,并用child记载其下标 int child = (k 0) c = queue[child = right]; if (comparator.compare(x, (E) c)