max-heap

    0熱度

    1回答

    創建最大堆O(n)的時間複雜度如何?它是僅在O(i)中與其父代進行比較還是O(log n)?

    0熱度

    2回答

    我想知道java的標準集合中的哪些類可以作爲Min-Heap或Max-Heap的父類? 我開發了Heap類,它可以將堆轉換爲min或max,具體取決於策略和使用的方法,如add,toString,toArray,用於服務標準收集方法名稱的目的。我需要爲Heap創建一個父類。我可以延續哪些課程或集合? 我正在使用左右子節點結構。

    1熱度

    1回答

    我需要找到最有效的算法來合併2個最大堆。 一些重要事實:堆被表示爲二叉樹,這意味着每個節點有3個字段 - 值(鍵),指向右側子節點的指針和指向左側子節點的指針。 我的想法:取第二堆的最後一片葉子,並將其作爲新堆的根。所以我們得到一個新的堆,當左邊的孩子是合法的最大堆,而正確的孩子是合法的最大堆。問題(根據我的觀點)只是根不是最大元素 - 所以我們可以從根運行函數Max-Heapify,我認爲它應該

    2熱度

    1回答

    我不確定如何將項目插入到我的最大堆中,然後慢慢向上以使max heap屬性保持不變。 如果heapArray已滿,我已經引發異常,因此無法插入項目。 我沒有使用JCF類或該程序的優先級隊列。 我也引發了我的deleteMax方法,該方法刪除堆的最大值並恢復堆,使max heap屬性保持不變。 public class MaxIntHeap { //my global var's private

    0熱度

    1回答

    我已經實現了一個minHeap類,所以我很好奇,如果不修改代碼,可以使用minHeap類作爲最大堆?

    2熱度

    1回答

    我正在寫一個最大堆,它可以改變優先級/值。但是,我有問題要理解我的代碼中出現了什麼問題。 我跟了這作爲參考:ref 這是我的代碼(我有一些隱藏的功能,因爲它不是在這裏聚焦) static void swap(MAX_HEAP *heap, int i, int j); static void swim(MAX_HEAP *heap, int k); static void sink(MAX_H

    0熱度

    1回答

    我不需要我們有辦法應用max-heapify算法嗎?我們必須從底部到頂部還是從頂部到底部應用它,還是我們可以應用到堆屬性不存在的地方?當我們要在樹中維護堆屬性時。 任何機構可以幫助 ?

    0熱度

    1回答

    我已經編寫了以下程序以最大化Java中的堆。 package heap; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class HeapMaxify { public static void main(String[] s) {

    3熱度

    3回答

    所以我和我的朋友在這個問題上沒有看到對方的眼睛。它要求在n個元素的最大堆中搜索第7大元素的時間複雜度? 我認爲它應該是O(n),她認爲它應該是O(1)。我的邏輯是,假設n是7,那麼第7個最大的元素將是堆中的最後一個元素,所以如果我們考慮最壞的情況,它應該是O(n)。然而,她表示,因爲這是一個最大的堆,所以找到第七大元素應該花時間。但在O(1)時間內,即使使用她的邏輯,甚至可以找到第50個最大元素或

    0熱度

    1回答

    我用pascal做了這些。 Proceure Max_Heapify(a:Table;i:longint); var tmp,l,r,k:longint; begin l:=2*i; r:=2*i+1; if (heapsize>=l)and(a[i]<a[l]) then k:=l else k:=i; if (heapsize>=r)and(a[i]<a[r]) then k:=r