2012-11-18 69 views
3

在我的大學筆記構建堆的僞代碼被寫入差不多是這樣(唯一的區別是括號我有括號):構建堆函數

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]?

+2

BuildHeap(B)會發生什麼? –

+2

它是僞代碼,'heap_size(A)'可能意味着幾乎任何東西。更可能的是你的教授被剝奪了。無論如何,他實際上使用堆大小(即爲什麼它會讓你感到困惑)? – rliu

回答

1

如果你有許多堆,A,B,C和只有一個變量堆大小,你將如何記住所有堆的大小? 對於所有堆,您將擁有一個屬性堆大小。

在許多僞代碼的對象O的屬性被寫爲Attriubute[O]Attribute(O),(有時它們也寫爲O.attribute)。

第一個示例假定您正在將特定堆的堆大小存儲爲堆的屬性。

第二個示例可能會將堆大小存儲在本地變量中,該變量從堆的長度屬性(Length[A])中獲取其值。

下面是一個關於僞碼文本從算法導論:

化合物數據通常被組織成對象,它們被包括屬性或字段。使用字段名稱,然後使用方括號中的對象名稱來訪問特定字段。例如,我們將數組視爲具有屬性長度的對象,指示它包含的元素數量。要指定數組A中元素的數量,我們寫長度[A]。儘管我們在數組索引和對象屬性中都使用方括號,但通常可以從上下文中清楚地看到哪種解釋是有用的