关于堆排序及其结构的一般问题
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,存放的是1
到12
(含)的整数序列.考虑下面的线性数组,用 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]
假设您有 [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,存放的是1
到12
(含)的整数序列.考虑下面的线性数组,用 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]