binary-heap

    0熱度

    2回答

    這是一個家庭作業問題,我要求顯示8元素二進制堆需要8個比較。 但是當我使用這樣一個例子:1 2 3 4 5 6 7 8 我不知道我是否應該自下而上或自上而下。 但無論如何,我已經嘗試過他們兩個。 在自上而下: 我已經做了8級,但是當我算比較的次數,我得到13:S 在bottum起來: 我已經在7個步驟完成,但是當我算餘得到10比較的次數:S 這裏試圖算法之後是我得到了比較: H [L] = 8>

    4熱度

    3回答

    我正在參加一個數據結構課程,我們正在使用Mark Weiss的Java第2版中的數據結構和算法分析。在他的BinaryHeap實現中,他的構造函數創建了一個可轉換爲AnyType []的Comparable []數組。你有什麼想法,爲什麼他這樣做,而不是僅僅創建一個新的AnyType []? 我瞭解BinaryHeap的結構,但我想加快泛型。類聲明足夠簡單,確保AnyType擴展一個與AnyTyp

    2熱度

    1回答

    鑑於中序遍歷列表,什麼是創建一個二進制最小值/最大值堆的最佳方式? 我想用下面的結構來限制: 沒有數組中的二進制堆使用。實現是基於節點的。 BinaryNode { value, parent, l_child, r_child } 讓我們來堅持Max-Heap。 問:我們可以做的比這涉及BubbleDown標準插好。

    -4熱度

    1回答

    對於我的C++數據結構類,我們實現了一個撥號調制解調器模擬器。我們的教授給了我們一個使用STL優先級隊列的工作源文件,但我們的工作是通過實現一個二進制堆來替代它。我今天去看她求助二進制堆,但她基本上告訴我和我的朋友轉移到IT :(她星期一剛開始討論它,包括優先級隊列和二進制堆,她在一小時內衝了過來,她今天開始談論一個新的主題,因爲她的幻燈片沒有完成,所以她將在星期五恢復二元堆,這是程序到期時的情況

    13熱度

    3回答

    我已經創建了一個二進制堆,它表示一個優先級隊列。這只是經典的衆所周知的算法。該堆計劃按時間順序排列的不同事件(排序鍵是時間)。 它支持2種操作:插入和刪除。每個節點的堆密鑰大於或等於其每個子節點。但是,使用相同密鑰添加事件不會保留它們添加的順序,因爲每次調用Remove或Insert後,堆積和堆積過程都會中斷順序。 我的問題是:經典算法中應該改變什麼以保持具有相同優先級的節點的順序?

    -4熱度

    1回答

    我研究過二進制堆,我仍然很困惑該怎麼做這個程序如果我能得到一些指導,我會非常感激它,我仍然學習java,遇到很多麻煩。 k進制堆就像一個二進制堆(其中k = 2),但(有一個可能的 例外),非葉節點有k個孩子而不是2個孩子。實施k元堆 作爲最小優先級隊列爲任意數k≥2支持以下操作: •插入(X):插入元件x到堆。 •extract-min():刪除並返回具有最小鍵的堆的元素。 k-ary堆將使用預

    6熱度

    3回答

    我只是想學習二進制堆,並且對在二進制堆中執行刪除操作有疑問。 我讀過,我們可以從二進制堆中刪除一個元素,我們需要重新對它進行重新組合。 但在下面的鏈接,它說不可: http://en.wikibooks.org/wiki/Data_Structures/Tradeoffs Binary Search AVL Tree Binary Heap (min) Binomial Queue (min

    0熱度

    3回答

    我想實現一個優先級隊列作爲排序數組支持最小二進制堆。我試圖讓update_key函數在對數時間運行,但要做到這一點,我必須知道該數組中項目的位置。無論如何不使用地圖來做到這一點?如果是這樣,怎麼樣?謝謝

    1熱度

    1回答

    刪除二進制堆中的最小元素後,即刪除根後,我知道必須調整堆以維持堆屬性。 但是,執行此操作的首選方法似乎是將最後一頁分配給根並篩選它。 我想知道爲什麼我們不採取過去是根的小孩,只是不斷篩選所有的孩子?這不是相同數量的操作,那麼爲什麼「分配最後一片葉子到根部和篩下」方法更受歡迎?

    6熱度

    2回答

    好的,假設我有一個文本文件(不一定包含每個可能的符號),我想計算每個符號的頻率,並在計算出頻率之後,我需要訪問每個符號及其頻率最頻繁到最不頻繁。這些符號不一定是ASCII字符,它們可以是任意的字節序列,雖然全部長度相同。 我正在考慮做這樣的事情(在僞代碼): function add_to_heap (symbol) freq = heap.find(symbol).frequency