6.2-1
略
6.2-2
比较元素大小的地方">"改成"<",运行时间没变化。
6.2-3
原数组不会有任何改变。
6.2-4
因为当i>a.heap-size/2时,i为叶子节点下标,所以原数组不会有改变。
6.2-5
// 非递归版本 static maxHeapify2(arr, i) { let flag = true; while (flag) { let l = HeapSort.left(i); let r = HeapSort.right(i); let largest = i; if (l < arr.length && arr[l] > arr[largest]) { largest = l; } if (r < arr.length && arr[r] > arr[largest]) { largest = r; } if (largest != i) { let temp = arr[i]; arr[i] = arr[largest]; arr[largest] = temp; // 此时arr[largest]已经被置换成更小的那个 i = largest; } else { flag = false; } } }
6.2-6
略。。