嘗試考慮位置的下限,這是max-heap中第n個最大的鍵。假設堆放置在數組中。上限的最小值(2^n-2,數組大小-1)我認爲,但總是下限爲0?堆數據結構
Q
堆數據結構
4
A
回答
0
問題的初始調查揭示了n和下限和上限之間的以下關係式(假設有在堆14個元件)
n lb up
1 1 1
2 2 3
3 2 7
4 2 14
9 3 14
10 4 14
12 5 14
13 6 14
14 8 14
要確定是可能的量比較大的元件的數目元素放在堆數組的特定位置,計算以該位置爲根的子樹的大小。 注意,計算被向後執行:這兩個數然後由式
# of elements possible larger = total number of elements - size of subtree - 1
EDIT有關。給定數組/堆中的位置,可以確定如果堆被分類,值將在哪個位置。給定的節點處的堆可以被劃分成三個分區:被保證是比當前的元件大
- 元素(父,父母父,...)被保證是
- 元素小於當前元素(根植於當前元素的子樹)
- 剩餘的元素可以大於或小於當前元素。
如果我們看一下用14族元素的實例堆,想要確定在第六位置的可能值的範圍內,基團如下:
- 組1包含兩個元素(3, 1)
- 組2包含兩個元素(12,13)
- 組3包含剩餘的九個元素(不包括當前值)(2,4,5,7,8,9,10,11,14)
因此,下限是3(組1中的元素數+1),而上限是11(組1中的元素數量+組3中元素數量+1)。
+0
我明白你寫的公式。仍然沒有得到下限。你能解釋一下爲什麼n = 13的下界是6? – turmoil 2010-03-22 15:11:48
相關問題
- 1. C++數據結構堆
- 2. 數據結構:堆棧
- 3. Segmenation Fault - 處理堆棧數據結構
- 4. 哪種數據結構是堆棧?
- 5. c代表堆的數據結構
- 6. 堆棧數據結構操作
- 7. 堆棧間隔的數據結構
- 8. 瞭解堆棧(數據結構),堆棧類,鏈表 - java?
- 9. 堆溢出 - 堆的結構
- 10. 如何結合使用散列和堆的數據結構
- 11. Java-數據結構堆棧:從用戶輸入的堆棧打印出整數
- 12. 數據結構
- 13. 數據結構
- 14. 數據結構
- 15. 數據結構++
- 16. 數據結構
- 17. 數據結構
- 18. 數據結構
- 19. 什麼時候非二進制數據結構比二進制數據結構更好? (即堆,BST等)
- 20. 哪個更好找到最小元素堆棧或堆數據結構
- 21. 以下情況下的數據結構如何? (最大堆棧)
- 22. 如何解決堆棧和隊列數據結構?
- 23. 我將如何建模UML中的堆棧數據結構?
- 24. 將結構中的數據推送到堆棧中C
- 25. 堆數據結構的精確定義是什麼?
- 26. 設計一個數據結構就像改進的堆棧
- 27. C++數據結構,最好能容納一大堆名字
- 28. 反向堆棧不使用任何數據結構
- 29. 瞭解堆棧數據結構和實現它
- 30. 適用於GC的內存堆數據結構?
對於最大堆,唯一保證是任何父節點大於或等於它自己,這意味着根元素始終大於或等於堆中的任何其他元素(a [parent]> = a [i],其中我不是根節點)。記住堆只是弱分類,所以如果你使用的是最大堆,你只能(很快)得到最大值,並且在最小堆中只能(很快)得到最小值。 – 2011-06-09 16:44:46