构建堆功能

时间:2012-11-18 13:06:14

标签: algorithm heapsort

在我的大学笔记中,Build Heap的伪代码几乎就是这样写的(只有区别是括号括号):

enter image description here

我在网上搜索过,有几个像这样:

但不应该是那样的吗?

BuildHeap(A) {
   heapsize <- length[A]
   for i <- floor(length[A]/2) downto 1
      Heapify(A,i)
}

他们为什么写heap_size [A] = length [A]?

1 个答案:

答案 0 :(得分:1)

如果你有很多堆,A,B,C。只有一个变量堆大小,你怎么记得所有堆的大小? 您将拥有所有堆的属性堆大小。

在许多伪代码中,对象O的属性被写为Attriubute[O]Attribute(O),(有时它们也被写为O.attribute)。

第一个示例假定您将特定堆的堆大小存储为堆的属性。

第二个例子可能是将堆大小存储在一个局部变量中,该变量从堆的长度属性(Length[A])获取其值。

以下是关于算法导论中的伪代码的文本:

  

复合数据通常被组织成对象,对象由属性或字段组成。使用字段名称访问特定字段,后跟方括号中对象的名称。例如,我们将数组视为一个对象,其属性长度表示它包含的元素数量。要指定数组A中的元素数,我们写长度[A]。虽然我们对数组索引和对象属性使用方括号,但从上下文中通常可以清楚地看出哪种解释是