3

私の大学のノートでは、Build Heap の疑似コードはほぼ次のように記述されています (違いは、かっこにかっこがあることだけです)。

ここに画像の説明を入力

で、ネットで調べたところ、以下のようなものがいくつかありました。

でもそんなはずないでしょ?

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

heap_size[A] = length[A] と書いているのはなぜですか?

4

1 に答える 1

1

多くのヒープ、A、B、C があり、可変ヒープ サイズが 1 つしかない場合、すべてのヒープのサイズをどのように覚えていますか? すべてのヒープに属性 heap-size があります。

多くの疑似コードでは、オブジェクト O の属性はAttriubute[O] またはとして記述されますAttribute(O)(場合によっては としても記述されますO.attribute)。

最初の例では、特定のヒープのヒープ サイズをヒープの属性として格納していると想定しています。

2 番目の例は、ヒープの長さ属性 ( ) から値を取得するローカル変数にヒープ サイズを格納することLength[A]です。

以下は、Introduction To Algorithms の疑似コードに関するテキストです。

複合データは通常、属性またはフィールドで構成されるオブジェクトに編成されます。特定のフィールドにアクセスするには、フィールド名の後に角括弧で囲まれたオブジェクトの名前を続けます。たとえば、配列は、含まれる要素の数を示す length 属性を持つオブジェクトとして扱います。配列 A の要素数を指定するには、length[A] と書きます。配列のインデックス付けとオブジェクト属性の両方に角括弧を使用していますが、通常、どの解釈が意図されているかは文脈から明らかです。

于 2012-12-27T02:11:57.747 に答える