堆排序问题
5 public void HeapAdjust(int[] array, int parent, int length) {
6 int temp = array[parent]; // temp保存当前父节点
7 int child = 2 * parent + 1; // 先获得左孩子
8
9 while (child < length) {
10 // 如果有右孩子结点,并且右孩子结点的值大于左孩子结点,则选取右孩子结点
11 if (child + 1 < length && array[child] < array[child + 1]) {
12 child++;
13 }
14
15 // 如果父结点的值已经大于孩子结点的值,则直接结束
16 if (temp >= array[child])
17 break;
18
19 // 把孩子结点的值赋给父结点
20 array[parent] = array[child];
21
22 // 选取孩子结点的左孩子结点,继续向下筛选
23 parent = child;
24 child = 2 * child + 1;
25 }
26
27 array[parent] = temp;
28 }
29
第二十行的代码中,如果把孩子节点的值付给父节点,那父节点的值怎么办?不应该是跟孩子节点交换么?