首页 > 编程知识 正文

低优先级队列要多久,优先级队列和堆

时间:2023-05-05 14:11:08 阅读:30228 作者:175

数据结构--什么是优先级队列优先级队列? 通用接口介绍优先级队列特性优先级队列介绍优先级队列插入/删除/检索优先级元素应用Comparable接口优先级队列

什么是优先级队列

队列是先进先出(FIFO )的数据结构,优先级队列也是队列,但不是简单的先进先出,而是先出优先级最高的。 优先级队列内部结构为堆(Heap )

常见界面介绍Java收藏框架提供了两种首选队列:PriorityQueuePriorityBlockingQueuePriorityQueue是线程不安全,PriorityBlockingQueue

如果使用PriorityQueue属性,则必须导入与PriorityQueue相同的包,即import java.util.PriorityQueue。 放置在优先级队列中的元素必须能够比较大小。 无法插入无法比较大小的对象。 否则,你会被抛出

ClassCastException异常不能插入空对象。 如果无法插入,则抛出NullPointerException而不限制容量,可以插入任意数量的元素。 可以在内部自动扩展插入和删除元素的时间的复杂性是, o(log2n ) O(log_2N ) O(log_2N ) log2n )在优先级队列底部使用堆数据结构优先级队列通用接口优先级队列生成器功能优先级队列) 默认容量为11优先级队列(intinitialCapacity ),用于创建初始容量为initial capacity的首选队列。 注意:初始容量不能小于1。 否则,在IllegalArgumentException中会抛出异常的prio ion extends EC ),booleanoffer(e )会插入元素e,插入成功并返回true,如果e对象为空,则返回true 请注意时间复杂性o(log2n ) O(log_2N ) o(log2n ) log2n )。 如果空间不足,则扩展E peek )以获取优先级最高的元素)。 如果优先级队列为空(nullE poll ) ),则删除优先级最高的元素并返回。 如果优先级队列为空,则nullint size (返回以获取有效元素数的void clear ) (空boolean isEmpty ) )检测优先级队列是否为空,如果为空,则trueimportjava.util.priried public class test (publicstaticvoidmain (string [ ] args ) ) priorityqueueintegerq=newpriorityqueue ); int [ ] arr={ 9,5,2,7,3,8,6 }; //将数组元素插入队列的for(intx:ARR ) q.offer ) x ); //获取队列q的有效元素数system.out.println(q.size ) ); //获取优先级最高的元素system.out.println(q.peek )//弹出优先级最高的元素,返回while (! q.isEmpty () (system.out.println ) (q.poll ) ); ) q .报价(0; q .清空q.clear (; if(q.isempty () ) { System.out.println ) )优先级队列null ); } else { System.out.println ('优先队列! 空值'; } }} Comparable接口Comparable接口是Java标准库的“接口”接口,只有一个抽象方法。 comparato(objectother )以这种方式指定对象本身与另一个对象之间的大小关系

java.lang.Comparable;Comparator接口也具有类似的作用。 Comparator接口,哪个类需要比较,这个类需要实现该接口。

应用优先级队列用于对提取的前k个元素进行排序

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。