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

优先级队列的抽象模型并不把数据存储结构看成是顺序容器。元素在进入优先级队列时,没有任何限制,但在退出时却有一个标准。我们可以把优先级队列想象成数据元素的集合,元素就像被随便丢到垃圾桶一样,彼此没有什么联系。联系数据时像把手伸到桶里,挑一个优先级最大的出来。

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

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值