我正在尝试理解使用堆排序对数组进行排序的代码(参考 - https://www.sanfoundry.com/java-program-implement-heap-sort/)
“maxheap”函数使用此计算来获取节点的左右子节点(在多个不同的示例/站点中使用相同)
int 左 = 2*i;
整数右 = 2*i + 1;
以上的逻辑/推理是什么?
此外,在 heapify 函数中,使用 i = N/2 -> 0 调用 maxheap fn
(例如,而不是 i = 0 到 N -1。)关于为什么这样做的任何想法?
public static void heapify(int arr[])
{
N = arr.length-1;
for (int i = N/2; i >= 0; i--)
maxheap(arr, i);
}