Java堆排序

RedType temp = L.r[low]; // 暂存当前要调整的根节点

int j;

// 沿关键字较大的孩子结点向下筛选

for (j = 2 * low; j <= high; j *= 2)

{

// 找到左右孩子中关键字较大的那个

if (j < high && L.r[j].key < L.r[j+1].key)

j++;

// 若根节点关键字大于等于孩子结点,无需调整

if (temp.key >= L.r[j].key)

break;

// 孩子结点上移到根节点位置

L.r[low] = L.r[j];

low = j; // 继续向下筛选

}

L.r[low] = temp; // 将暂存的根节点放到最终位置