PriorityQueue数据结构
来源:互联网 发布:苹果非线性编辑软件 编辑:程序博客网 时间:2024/05/16 15:58
PriorityQueue这种数据结构支持按照优先级取出里面的元素。这是和其它常用数据结构,比如 ArrayList, Queue, Stack等最大的区别。因为要支持优先级,而heap具有类似的结构,所以,PriorityQueue一般都是基于HEAP实现的。(也可以用其它数据结构实现,但是各种复杂度会有不同。)
基于HEAP实现的PriorityQueue复杂度分析:
add(E e): O(lg n)
poll(): O(lg n) (注意,取出元素只需要O(1), 但是维护HEAP结构需要 O(lg n))
remove(E e): O(n)
下面例子是用Priority Queue保存学生信息,学生类含有姓名和成绩,当把学生保存在Priority Queue里时,成绩最低的学生放在最前面。如果想把成绩最高的放在最前面,只要把compare方法改成 return s2.grade - s1.grade; 即可。
实例1:public static void main(String[] args) {
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.add("dog");
pq.add("apple");
pq.add("fox");
pq.add("easy");
pq.add("boy");
while (!pq.isEmpty()) {
System.out.print("left:");
for (String s : pq) {
System.out.print(s + " ");
}
System.out.println();
System.out.println("poll(): " + pq.poll());
}
}
输出的结果如下:
left:apple boy fox easy dog
poll(): apple
left:boy dog fox easy
poll(): boy
left:dog easy fox
poll(): dog
left:easy fox
poll(): easy
left:fox
poll(): fox
可以看到,
0 0
- PriorityQueue数据结构
- PriorityQueue
- PriorityQueue
- priorityqueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- priorityQueue
- PriorityQueue
- PriorityQueue
- PriorityQueue
- JavaScript 数据结构(4):优先级队列 PriorityQueue
- 数据结构——优先队列PriorityQueue
- 复用
- [ArcGIS必打补丁]ArcGIS 10.2.2 for (Desktop, Engine, Server) Geodatabase and Feature Service Sync Optimiz
- Mac 配置adb环境变量
- SpringMVC集成Tiles2
- [EASYUI] tooltip的扩展使用
- PriorityQueue数据结构
- Woody的Python学习笔记4
- jQuery.extend函数解析
- 范德萨发的说法
- java实现图片的缩放问题
- 可以在美团交固定电话费吗
- Java设计模式透析之 —— 模板方法(Template Method)
- 10月23日TQ210V6开发板正式推出——高性价比开发板
- 关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]