关于堆排序及其结构的一般问题

General question about heap sort and its structure

假设您有 [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]。您将有 12 个作为顶部 parent。 11 和 10 是 12 中唯一的 child 人吗,因为他们是所有人中最高的?

这听起来很明显,但我的代码看起来是正确的,但我得到了相互矛盾的结果。而不是 11 和 10 作为 12 的 children,我得到 11 和 7。11 和 7 的 children 值都比它们低,所以我的代码不想保留排序它。

我的主要问题是 7 可以是 12 的 child 吗,只要 7 的 children 值较低?

是的,7可以是Heap Tree中根的右边child,存放的是112(含)的整数序列.考虑下面的线性数组,用 usual dependency 节点位置和它的 children 位置之间的 usual dependency 表示这棵树:

V = [12, 11, 7, 10, 9, 3, 2, 8, 6, 5, 4, 1]

堆属性对于这个数组是有效的,因为[0, 6]:

范围内的所有i
V[i] > V[2*i + 1]
V[i] > V[2*i + 2]