数据结构应用标准模版库STL——优先级队列(优先级队列排序)

本文介绍了STL中的优先级队列(priority_queue),它是一种特殊的数据结构,用于实现高效的排序算法。优先级队列通过堆实现,元素的插入和删除遵循最大优先级原则。内容包括如何使用push()、pop()、top()等操作,并展示了如何利用优先级队列进行升序排序的过程。
摘要由CSDN通过智能技术生成
优先级队列的抽象模型并不把数据存储结构看成是顺序容器。元素在进入优先级队列时,没有任何限制,但在退出时却有一个标准。我们可以把优先级队列想象成数据元素的集合,元素就像被随便丢到垃圾桶一样,彼此没有什么联系。联系数据时像把手伸到桶里,挑一个优先级最大的出来。

优先级队列ADT的接口与栈,队列容器几乎相同。但是,为了确定优先级的大小,数据类型T必须实现关系运算符<。push()操作像优先级队列中添加一个数据,pop()操作删除优先级最高的数据。与其他容器一样,我们也可以通过size()和empty()函数来访问优先级最高的状态。特别是,我们应当注意优先级队列是怎样引用下一个将要弹出的数据的。与栈相同的是,优先级队列使用top()操作,与此相反,队列是通过front()操作来实现的。  priority_queue类在头文件queue中。

默认情况下,优先级队列假定凡具有最大值的元素也具有最大的优先级。就是说,如果x和y是优先级队列中的元素,并且x<y,那么y比x有更大的优先级。

堆是一种特殊的二叉树,用堆来实现优先级队列是非常高效的。STL priority_queue类是通过使用堆来实现优先级队列的。

优先级队列提供了一种很有效的排序算法。该算法首先把向量v的n=v.size()个元素加入到一个优先级队列中,然后通过一个循环从优先级队列中把数据一个一个蹦出来。

因为优先级队列在释放数据时是按照倒序进行的(由最大优先级到最小优先级),所以排序过程中ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值