max-heap

    1熱度

    1回答

    這是我的代碼。我對c和指針很陌生,所以很可能是指針錯誤。 #include<stdio.h> #include <stdbool.h> typedef int (*comparatorPtr)(void*, void*); bool isMaxHeap(void **heap, int index, int length, comparatorPtr comparator); /**

    0熱度

    1回答

    大約每月一次,我們的路由器組件掛起,停止流量。它記錄「OutOfMemoryError:Java堆空間」錯誤。我認爲它一直在使用大約0.5 GB的物理內存。 它看起來像配置文件被放置在「C:\ fmc-1.0.2.fuse-097 \ instances \ esb-router-container \ etc」,但我沒有找到jvm選項的地方。在哪裏添加「-Xmx512m」或其他什麼? 我並不興奮

    0熱度

    1回答

    我試圖實現一個算法來查找具有n個不同元素的最大堆的第10個最大元素O(1 ) 時間。 我試圖繪製它並使用heap屬性,但隨着我在堆中更深入,它變得越來越複雜。這是我所做的草案,以及我堅持的地方 - 從我們具有不同元素和堆屬性的事實來看,我們知道父項始終比子項大。因此根是最大的元素。下一個最大元素是根子之間的更大元素。 編輯:我還想過比較大的兒子和其他父母的兒子。如果它們中的至少一個大於另一個父親,

    2熱度

    1回答

    我在下面顯示其中包含的優先級值以及一些附加字段,自定義任務等級: class Task{ int ID; int Priority; int Time; public Task(int i, int p, int t){ this.ID = i; this.Priority = p; this.Time = t;

    1熱度

    1回答

    作爲一項家庭作業問題,我必須從數組中取出最大堆。讀取問題: 請抽出存儲在以下數組中(堆大小是6) A [] = {} 15,10,8,5,2,7,20,30 最大堆 所以,當我嘗試這個問題時,我只是以舊式的方式做了,並沒有考慮到heapSize小於數組的大小。 最大堆我是: {} 30,20,15,10,2,7,8,5 我的問題是:這是正確的嗎?此外,現在heapSize小於數組大小,這是如何影響

    2熱度

    1回答

    考慮以下示例。我將隨機數添加到最小堆中,同時我將相同數字以相同順序添加到最大堆中。所以最後這兩堆將有相同的數字,其中一個是最小堆,另一個是最大堆。 現在,這裏的問題: 如果我決定從最大堆取出的最大元素,將從最大堆總是在最小堆的底部是最大的元素?如果不是,那麼另一個問題是,如果我想從最小堆中刪除最大元素並將其與最小堆的最後一個元素進行交換,刪除最後一個元素,我是否需要運行必須比較該開關元素的操作與他

    0熱度

    2回答

    我知道BUILD-MAX-HEAP在堆排序中的運行時間爲O(n)。但是,如果我們有一個已經按降序排序的數組,爲什麼在BUILD-MAX-HEAP的運行時間仍然有O(n)? 是不是應該像O(1)?它已經從最大值到最小值排序,所以我們不需要MAX-HEAPIFY。 我的理解是否正確?有人可以向我解釋嗎?

    0熱度

    2回答

    我正在使用算法,特別是heapsort。根據我的理解,heapsort算法涉及通過首先將其轉化爲最大堆來準備列表。 車削我 [2,8,5,3,9,1] 進入 [9,8,5,3,2,1] 隨着堆排序我我應該把9與1交換。但是通過在最大堆積之後直接查看數組,我會看到一個排序順序排列的列表。爲什麼當列表已經按降序排列時需要交換? 這只是我的想法看後有: https://www.youtube.com/w

    3熱度

    2回答

    我試圖使用heapq模塊(https://docs.python.org/3/library/heapq.html)中的Python(2.0)內置最小堆數據結構來構建最大堆。要做到這一點,我只需使用我需要的數字的負數來推入我的堆。 使用這個(最大堆版本): import heapq h=[] for i in xrange(10): heapq.heappush(h,-i)

    0熱度

    1回答

    我有最小堆的Dijkstra的實現,我試圖改變最小堆到最大堆找到最大路徑,但我不能,輸出是錯誤的 所以,請你能幫我改變這個實現到最大堆? 非常感謝 public class DikjstraAlgorithm { public static void main(String[] args) { Graph graph = new Graph(9); for (int i =