什么是优先队列,它有什么用处?

5

当我们编写代码并使用优先队列时,优先级到底代表什么?它是抽象的东西还是具体的东西,比如按照不同建筑物的高度进行排序? 使用优先队列有什么优势?


欢迎来到SO!请提供代码块。否则,这个问题对于SO来说太宽泛了。好问题 - Martin Meeser
2
不同意负评,这个问题并没有什么歧义。即使没有代码块,它也是一个很好的问题。 - vikingsteve
3个回答

4
一般队列按照先来先服务的原则处理项目。而优先级队列根据项目的优先级确定服务顺序。在优先级队列中,下一个要处理的项目将是优先级排名最高的那个。
举例来说:
  • 航空公司会优先登机“头等舱”客户,然后才是“经济舱”客户
  • 医院急诊室会优先处理心脏病、出血和呼吸问题,然后再看其他患者
  • 许多餐厅会先安排贵宾就座,即使普通顾客已经预定了座位。
这是一件具体的事情,它决定了系统的实际操作。你作为程序员的工作就是通过提供有序属性来识别和反映这种真实世界的行为。在Java中,可以通过使对象实现“Comparable”接口或提供一个“Comparator”来完成这一点。

1
你可以通过让元素实现Comparable接口并提供Comparator来定义优先级以构建队列,详情请查看文档

优先队列的元素按其自然排序或根据在队列构造时提供的比较器进行排序。


0

考虑到其中一个构造函数接受一个Comparator,很明显它是用来进行比较的。默认情况下,除非指定,否则它使用Comparator.naturalOrder()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接