2011-06-02 22 views
1

我只需要验证一下我是否正确执行此操作。我检查了wiki的heapsort,但它看起来在动画中构建堆,它将数字插入节点并按顺序排序。构建一个有效的堆

问题询问为 “绘制有效堆与这些元素.. {7,12,1,3,22,5,11}为树”

我试图在几个例子,看起来我应该先布置节点,然后重新排序节点,而不是像我这样排序。我做得对的方式是否正确?

例如,将这种元件的节点

 7 

    12  1 

3 22 5 11 

订货从这里开始:交换1和7

 7 

    12  1 

3 22 5 11 

交换3和12

 1 

    12  7 

3 22 5 11 

交换5,7

 1 

    3  7 

12 22 5 11 

完成。

 1 

    3  5 

12 22 7 11 

其实这是不对的。

给出的答案是

 1 

    7  3 

12 22 5 11 

如果我开始重新排序堆从左侧第一(以3开头),那么我得到正确的答案。

+0

什么是“维基”?维基百科? – 2011-06-22 23:43:53

回答

3

实际上,堆数据结构只有一个属性,可以定义如下:“在堆T中,对于除根以外的每个节点v,存储在v处的密钥大于或等于密钥存储在v的父母“。

所以有很多基于元素的堆权利表示(7,12,1,3,22,5,11)。有了这些元素,我应用了“插入和排序”算法,结果提供了另一个版本:

 1 
    3   5 
12 22 7 11 
+0

谢谢。我有一种感觉,有多个答案。只是我只有一个。 – bigubosu 2011-06-02 15:48:33