【问题标题】:General question about heap sort and its structure关于堆排序及其结构的一般问题
【发布时间】:2020-02-08 04:38:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: computer-science heapsort


    【解决方案1】:

    是的,7 可以是堆树中根的右孩子,存储从112(包括)的整数序列。考虑下面的线性数组,用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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      相关资源
      最近更新 更多