优先队列也是一种队列,只不过不同的是,优先队列的出队顺序是按照优先级来的;在有些情况下,可能需要找到元素集合中的最小或者最大元素,可以利用优先队列ADT来完成操作,优先队列ADT是一种数据结构,它支持插入和删除最小值操作(返回并删除最小元素)或删除最大值操作(返回并删除最大元素);
这些操作等价于队列的enQueue和deQueue操作,区别在于,对于优先队列,元素进入队列的顺序可能与其被操作的顺序不同,作业调度是优先队列的一个应用实例,它根据优先级的高低而不是先到先服务的方式来进行调度;
如果最小键值元素拥有最高的优先级,那么这种优先队列叫作升序优先队列(即总是先删除最小的元素),类似的,如果最大键值元素拥有最高的优先级,那么这种优先队列叫作降序优先队列(即总是先删除最大的元素);由于这两种类型时对称的,所以只需要关注其中一种,如升序优先队列;
下面操作组成了优先队列的一个ADT;
1.优先队列的主要操作 优先队列是元素的容器,每个元素有一个相关的键值;
2.优先队列的辅助操作
实现插入删除寻找最小值无序数组1nn无序链表1nn有序数组n11有序链表n11二叉搜索树logn(平均)logn(平均)logn(平均)平衡二叉搜索树lognlognlogn二叉堆lognlogn1
当然,优先队列不是三言两语就能够马上讲完的,更多情况下需要我们结合实际的例子来进行理解,这样学习起来才会更有效率,我们也可以到动力节点在线观看免费的视频课程,对自己的学习也有很大的提升。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54