Java 的 PriorityQueue 与最小堆有何不同?

2024-05-23

他们为什么命名PriorityQueue如果你不能插入优先级?它看起来与堆非常相似。有什么区别吗?如果没有区别那为什么叫它PriorityQueue而不是堆?


默认的PriorityQueue是用Min-Heap实现的,即栈顶元素是堆中最小的元素。

为了实现最大堆,您可以创建自己的比较器:

import java.util.Comparator;

public class MyComparator implements Comparator<Integer>
{
    public int compare( Integer x, Integer y )
    {
        return y - x;
    }
}

因此,您可以通过以下方式创建最小堆和最大堆:

PriorityQueue minHeap=new PriorityQueue();
PriorityQueue maxHeap=new PriorityQueue(size, new MyComparator());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 的 PriorityQueue 与最小堆有何不同? 的相关文章

随机推荐