一个合适的数据结构应该支持两种操作:删除最大元素和插入元素。这种数据类型叫做优先队列。
实现栈或是队列与实现优先队列的最大不同在于对性能的要求。对于栈和队列,我们的实现能够在常数时间内完成所有操作;
而对于优先队列,我们刚刚讨论过的所有初级实现中,插入元素和删除最大元素这两个操作之一在最坏情况下需要线性时间来完成。
API
一个优先队列的用例
问题:输入N个字符串,每个字符串都对映着一个整数,从中找出最大的M个整数。
分析:
- 将输入排序然后从中找出M个最大的元素(不适于输入非常大的情况)
- 将每个新的输入和已知的M个最大元素比较(除非M较小,否则这种比较的代价非常高昂)
public class TopM
{
public static void main(String[] args)
{

最低0.47元/天 解锁文章
1392

被折叠的 条评论
为什么被折叠?



