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

问题描述 投票:1回答:1

说您的堆中有[12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]。您将有12位是最大的父级。 11和10是12个孩子中唯一的孩子,因为他们是所有人中最高的吗?

听起来很明显,但是我的代码看起来正确,并且得到的结果相互矛盾。而不是11和10作为12的子代,我得到11和7。11和7的子代值都比它们低,因此我的代码不想继续对其进行排序。

我的主要问题是,只要7个孩子的价值较低,那么7个可以是12个孩子吗?

computer-science heapsort
1个回答
0
投票

是,7可以是堆树中根的右子,存储从112(包括)的整数序列。考虑下面的线性数组,用节点位置与其子位置之间的usual dependency表示这棵树:

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

[Heap属性对于此数组有效,原因是i范围内的所有[0, 6]

V[i] > V[2*i + 1]
V[i] > V[2*i + 2]
© www.soinside.com 2019 - 2024. All rights reserved.