簡體   English   中英

使用priorityQueue的java heapify方法

[英]java heapify method using priorityQueue

我在Java程序中將priorityQueue用作最大堆實現。 現在,我需要對創建的堆進行堆計算以計算最大值。 似乎priorityQueue沒有實現heapify方法。 所以我的問題是有沒有要使用priorityQueue處理此問題? 如果不存在,是否有Java中具有heapify方法的Max-heap可靠實現? 請注意,我的程序使用其自己的比較器。 因此,此實現應支持這一點。

一些更多的解釋:

PriorityQueue<Customer> marginalGainHeap = new PriorityQueue<Customer>(
            1, new Comparator<Customer>() {
                public int compare(Customer c1, Customer c2) {
                    return Double.compare(c1.getMarginalGain(),
                            c2.getMarginalGain());
                }
            });

假設已為“客戶”類型的“節點”對象更改了marginalGain值。 一種解決方案是

marginalGainHeap.remove(node)
marginalGainHeap.add(node)

但有個問題:

  • 它給我的程序增加了一些額外的延遲。 我想盡可能地高效。

優先級隊列已經是一個堆,因此它不需要heapify方法。
通常在不是堆的結構上實現此方法。

因此,只需將元素添加到隊列中或從隊列中刪除元素,
假設您的最大元素位於位置0(在根處)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM