這裏是增加鍵操作的僞代碼假設我們使用的是馬克斯 - 堆優先級隊列增加鍵opeartion
if key < a[i]
then return an error, because key is less than the current key
else
a[i] = key
while i > 1 and a[parent(i)] < a[i]
swap a[i] with a[parent(i)]
i <- parent(i)
根據cormen算法的書,我不能減少的關鍵,如果我使用最大堆,但是阻止我這麼做的原因是什麼?我知道如果條件不會讓我減少關鍵。
但是假設我想以減少其在最大堆一定值時,這樣做,我申請heapify操作之後,然後我就可以減少,即使我使用MAX-堆的關鍵。這保證了最大堆的屬性
這個假設有什麼問題?
EDIT heapify功能類似於從一個給定的陣列構建堆功能。但不是從ZERO構建整個堆,我們可以從某個節點堆砌它。
並不是每個人都熟悉這本書。添加「heapify」是什麼。 –
我記得當我讀這本書的時候,我有同樣的想法,呃,沒有?它仍然是O(log n)。 –
是的,它仍然是O(LG N),但它會起作用嗎? –